Windows7 メモリ2GB弱で、下記のSample61.javaのjavaファイルを400回(又は4000回)ループしまして 各ループの『obj.method(j);』を実行する所要実行時間を測定し、最大値、最小値を表示しています。 測定環境は下記の、『S_Sample61 //フォルダー構造』、『aaa.bat //バッチファイル』、 『Sample61.java //javaファイル』をご覧ください。 400回ループの場合の各ループの最大実行時間:約0.34ms 4000回ループの場合の各ループの最大実行時間:約1.6ms Q1)400回ループと4000回ループの場合に於いて、『obj.method(j);』を実行する所要実行時間 最大値の差の原因についてコメントください。 注)もしアルゴリズムに誤りがあれば、ご指摘ください。 S_Sample61 //フォルダー構造 ---class ---jar ---src aaa.bat //バッチファイル cls c:\pleiades44\java\8\bin\javac -encoding UTF-8 -cp ./jar/* -d ./class ./src/*.java rem c:\pleiades44\java\8\bin\java -verbose:gc -cp ./class;./jar/* Sample61 c:\pleiades44\java\8\bin\java -cp ./class;./jar/* Sample61 pause Sample61.java //javaファイル class Sample61{ public static void main(String args[]){ sub obj ; long start=0; int max=0; int min=99999; for(int j=0; j<400; j++){ obj = new sub(); //dataProcess_XXX obj_dataProcess=new dataProcess_XXX(); //obj_dataProcess.setPriority(Thread.MAX_PRIORITY); //効果なし //obj_dataProcess.start(); //obj.setPriority(Thread.MAX_PRIORITY); //obj.start(); start=System.nanoTime(); obj.method(j); long end=System.nanoTime(); long wk=end-start; if(wkmax) max=(int)wk; // System.out.println("cycle_time="+wk); // obj = null; // System.gc(); // try{Thread.sleep(1);}catch(InterruptedException e){} } //for String str; str=String.format("min=%1$,d max=%2$,d max/min=%3$d",min,max,(int)(max/min)); System.out.println(str); // System.out.println("min="+min+" max="+max+" max/min="+(int)(max/min)); } //main } class sub{ void method(int k){ int a,b,c; a=100; b=200; for(int i=0; i<10000; i++){ c=(a+b+k)*i; } // System.out.println("ようこそ!javaの世界へ"); } } 以上、宜しくお願いします。
↧