Thi*_*lan 0 java jit jvm-hotspot nanotime
这不是我第一次遇到编程语言中的时钟时间问题.基本上我通过在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());
}
Run Code Online (Sandbox Code Playgroud)
因此,经过大约1,000次运行后,经过的时间为750k至850k.但经过大约100,000次运行后,经过的时间降至580k至750k.通过观察平均值(stats.getMeans())可以最好地注意到持续减少,其中108k循环后平均值为〜632k,而3k循环平均值为~100万.切换到currentTimeMillis而不是nanoTime不会改变任何东西.
问题是,由于某种原因,while循环运行的时间越长,经过的时间越来越短.谁能解释一下?
这是您的热点 - 您运行代码的次数越多,优化程度越高.最终它会尽其所能,你会看到结果的稳定.
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |