[Java lista] array
Peter Verhas
peter at verhas.com
2009. Dec. 10., Cs, 16:03:49 CET
Ez pont a C és a Java közötti gondolkodás különbsége.
2009/12/10 Andras Suller <suller.andras at gmail.com>:
> Hello,
>
> Az arraycopy gyors, viszont nem azt csinálja, amit te szeretnél. Le is
> van írva a doksiban:
>
> "If the src and dest arguments refer to the same array object, then
> the copying is performed as if the components at positions srcPos
> through srcPos+length-1 were first copied to a temporary array with
> length components and then the contents of the temporary array were
> copied into positions destPos through destPos+length-1 of the
> destination array."
>
> Tehát nem nullázza ki az egész tömböt, hanem csak az első 2 elemét. A
> többit csak arrébb mozgatja 1 pozícióval.
>
> Üdv: András
>
> 2009/12/10 Tamás Viktor <viktor.tamas at gmail.com>:
>> Osszedobtam egy kis kodot, ime az eredmenye:
>>
>> Konstruktor: 1412
>> Array fill: 465
>> Sajat fill: 458
>> ArrayCopy: 388
>>
>> Tehat az arrayCopy nyer. Figyeljetek meg a hasznalatat, nem kell hozza ket tomb.
>> V
>>
>> public class A {
>>
>> static final int M = 1000000;
>> static final int N = 256;
>>
>> public static void main(String[] args) throws Exception{
>> t1();
>> t2();
>> t3();
>> t4();
>> }
>>
>> private static void t1() {
>> long t0 = System.currentTimeMillis();
>> int[] array;
>> for(int i=0;i<M;i++) {
>> array = new int[N];
>> array = null;
>> }
>> long t1 = System.currentTimeMillis();
>> System.out.println("Konstruktor: " + (t1-t0));
>> }
>>
>> private static void t2() {
>> long t0 = System.currentTimeMillis();
>> int[] array = new int[N];
>> for(int i=0;i<M;i++) {
>> java.util.Arrays.fill(array, 0);
>> }
>> long t1 = System.currentTimeMillis();
>> System.out.println("Array fill: " + (t1-t0));
>> }
>>
>> private static void t3() {
>> long t0 = System.currentTimeMillis();
>> int[] array = new int[N];
>> for(int i=0;i<M;i++) {
>> for(int j=0;j<N;j++) array[j] = 0;
>> }
>> long t1 = System.currentTimeMillis();
>> System.out.println("Sajat fill: " + (t1-t0));
>> }
>>
>> private static void t4() {
>> long t0 = System.currentTimeMillis();
>> int[] array = new int[N];
>> for(int i=0;i<M;i++) {
>> array[0] = 0;
>> System.arraycopy(array, 0, array, 1, array.length-1);
>> }
>> long t1 = System.currentTimeMillis();
>> System.out.println("ArrayCopy: " + (t1-t0));
>> }
>> }
>> _______________________________________________
>> Javalist mailing list
>> Javalist at javagrund.hu
>> http://javagrund.hu/mailman/listinfo/javalist
>>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>
--
Verhás Péter
ügyvezető
Verhás & Verhás Szoftver Manufaktúra Kft.
peter at verhas.com
t: +36(30)9306805
További információk a(z) Javalist levelezőlistáról