[Java lista] array

Andras Suller suller.andras at gmail.com
2009. Dec. 10., Cs, 16:01:21 CET


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
>


További információk a(z) Javalist levelezőlistáról