gpt4 book ai didi

java调用一个方法的平均时间

转载 作者:行者123 更新时间:2023-11-30 06:01:17 26 4
gpt4 key购买 nike

我想计算调用方法所需的平均时间,但结果很大程度上取决于下面代码中的“numberOfTries”变量:

int averageExecutionTime = 0;
int numberOfTries = someNumber;

for(int i=0 ; i<numberOfTries ; ++i){
long t = System.nanoTime();
CallSomeMethod();
averageExecutionTime += (System.nanoTime()-t);
}
averageExecutionTime /= numberOfTries;
System.out.println(averageExecutionTime);

当我第一次运行我的方法时,调用该方法需要大约 6000 纳秒。然而,当我再次调用它时,所花费的时间减少到大约 50 纳秒。造成这种减少的原因是什么?

最佳答案

可能是 JIT(即时)编译器。 JIT 编译器可以通过检测次优但重复的执行模式(我猜还有很多我不知道的其他事情)来动态优化字节码。这就是为什么所有基准测试在开始测量性能之前都有一个“预热”期:Java 程序在经过一些 JIT 优化周期后需要一些时间才能达到其峰值性能。

作为一个实验,尝试跳过方法的前 50 次执行,看看是否有差异。如果没有,请尝试使用 100 等。

正如 Eugene 所指出的,执行基准测试的一种更可靠的方法是使用由深思熟虑的人设计的库。 jmh就是这样一个库。

关于java调用一个方法的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52248399/

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