[Java lista] array
CoL
col at gear.hu
2009. Dec. 10., Cs, 18:37:30 CET
Hali,
akkor ezzel meg is válaszoltad, hogy nincs warmup mérési hiba. Ha
összehasonlítod, az n* megismételt eredményeket, látni fogod, hogy az
arányok kialakulnak, elképzelhető, hogy 1-2 alkalommal peak szerű
eredményed lesz, de az átlagot nézve pont, hogy megkapod amit akartál a
microbenchmarkoddal.
Mit javasolsz a microbenchmarkok helyett, ha szerinted mégsincs
létjogosultságuk?
C.
Kristof Jozsa wrote:
> Szia,
>
> a rövid válasz h akárhol.. a hosszabb választ megkaphatod egyszerűen
> ha pl végtelen ciklust csinálsz a mainből, hagyod futni, megnézed a
> log elejét/végét, kiszámítod az általad szignifikánsnak tartott
> szeletekből az átlagokat, az egészet megismétled n-szer és
> összehasonlítod. Érték szerint biztosan különböző lesz az eleje meg a
> vége, arányaiban meg bőven lehetséges, de nem tudhatod amíg meg nem
> nézted.
>
> K
>
> 2009/12/10 CoL <col at gear.hu>:
>
>> Hali,
>>
>> mutasd meg légyszi, ebben a kódban, hol okozhatna időmérési hibát a
>> warmup period?
>>
>> köszi
>> C.
>>
>> Kristof Jozsa wrote:
>>
>>> warmup period? hagyjuk már az ilyen microbenchmarkokat..
>>>
>>> K
>>>
>>> 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
>>>
>>>
>>>
>> _______________________________________________
>> 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
>
>
További információk a(z) Javalist levelezőlistáról