次のコードを使用して、いくつかの並べ替えアルゴリズムの実行時間をテストしたい
int n = 2000;
for(int i=0; i<10; i++){
n *= 2;
init(array, n); // initializes array with n elements
long startTime = System.nanoTime();
sort(array;
long elapsedTime = System.nanoTime()-startTime;
System.out.println("Size: "+n+"\t\tTime: "+elapsedTime/1000000+"(ms)");
}
出力は
Size: 4000 Time: 0(ms)
Size: 8000 Time: 0(ms)
Size: 16000 Time: 0(ms)
Size: 32000 Time: 0(ms)
Size: 64000 Time: 0(ms)
Size: 128000 Time: 0(ms)
Size: 256000 Time: 0(ms)
Size: 512000 Time: 0(ms)
Size: 1024000 Time: 0(ms)
Size: 2048000 Time: 0(ms)
問題はアルゴリズムにあるのではなく、配列を適切にソートし、大きな配列のジョブを実行するにはかなりの時間がかかります。この例の実行には約 10 秒かかりました。Javaのドキュメントで説明されているように、nanoTime()を使用したと思います。この問題の答えを検索したところ、同様の問題が発生したようです。たとえば、 Java にストップウォッチはありますか? . しかし、問題を解決する方法を見つけることができませんでした。apache の StopWatch を使用する提案がありましたが、私が理解したところでは、nanoTime() への同様の呼び出しを使用します。では、この問題を解決するにはどうすればよいでしょうか。違いがある場合は、jre 1.8.0_31 を使用して Windows 7 でコードを実行しています。ありがとう