プログラミング言語の時刻に問題が発生したのはこれが初めてではありません。基本的に、whileループで関数を呼び出すことにより、関数の実行速度を測定しています。問題は、何らかの理由で、whileループの実行時間が長くなるほど経過時間が短くなり続けることです。誰か説明できますか?以下のコード。
DescriptiveStatistics stats = new DescriptiveStatistics();
while(true) {
long startTime = System.nanoTime();
executeSaxonXsltTransformation();
long stopTime = System.nanoTime();
long elapsedTime = stopTime-startTime;
stats.addValue((double)elapsedTime);
System.out.println(stats.getN()+" - "+elapsedTime+ " - "+stats.getMean());
}
したがって、約1,000回の実行後、経過時間は750kから850kになります。しかし、約100,000回の実行後、経過時間は580kから750kに低下します。継続的な減少は、平均(stats.getMeans())を見ると最もよくわかります。これは、108kループ後の平均が約632kであるのに対し、3kループの平均は約100万です。nanoTimeの代わりにcurrentTimeMillisに切り替えても、何も変わりません。