Morten Nedertoft wrote:
> Morten Jensen wrote:
>
>> Der er desværre ingen vej udenom at lave et nyt array af den rigtige
>> type og så kopiere elementerne (bør iøvrigt gøres med System.arraycopy).
>
>
> Sjovt nok saa laeste jeg fornyeligt, at System.arraycopy er langsommere
> end selv at kopiere via en for-loekke.
> Ikke at jeg ville undlade at bruge arraycopy af den grund, men pudsigt
> er det da.
Det synes jeg også, så jeg lavede lige hurtigt en lille testklasse for
at undersøge det. Den opretter et array med længden args[0], fylder det
med (forskellige) String objekter og kopierer den vha. et for(;;) loop
og bagefter vha. System.arraycopy.
Resultaterne blev som følger:
Arraystørrelse: 800
for(;;) : 0ms
arraycopy : 0ms
Arraystørrelse: 10000
for(;;) : 8-9ms
arraycopy : 0-1ms
Arraystørrelse: 100000
for(;;) : 90-120ms
arraycopy : 7-8ms
Så konklusionen må være, at sålænge det ikke er de helt vilde
datamængder man smider rundt med, så kan det næsten være ligemeget,
hvilken metode man bruger, men så snart vi er oppe og snakke om store
arrays, så kan System.arraycopy helt klart betale sig.
--
CAPUT A/S Morten Jensen Phone +45 70 12 24 42
Nygade 6 Senior Developer Fax +45 70 11 24 42
DK-1164 Kbh K jensen@caput.com
http://www.caput.com