gpt4 book ai didi

Java System.nanoTime 经过的平均时间不断变小

转载 作者:行者123 更新时间:2023-12-01 06:40:57 32 4
gpt4 key购买 nike

这不是我第一次遇到编程语言中的时钟时间问题。基本上,我通过在 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 万。切换到 currentTimeMillis 而不是 nanoTime 不会改变任何东西。

最佳答案

Problem is that for some reason the elapsed time keeps getting shorter the longer the while loop runs. Can anyone explain?

这就是您的热点 - 您运行代码的次数越多,它的优化就越积极。最终它会竭尽全力,您会看到结果达到稳定水平。

关于Java System.nanoTime 经过的平均时间不断变小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724950/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com