gpt4 book ai didi

java - 为什么连续两次调用同一方法会产生不同的执行时间?

转载 作者:行者123 更新时间:2023-12-02 07:41:48 24 4
gpt4 key购买 nike

这里是一个示例代码:

public class TestIO{
public static void main(String[] str){
TestIO t = new TestIO();
t.fOne();
t.fTwo();
t.fOne();
t.fTwo();
}


public void fOne(){
long t1, t2;
t1 = System.nanoTime();
int i = 10;
int j = 10;
int k = j*i;
System.out.println(k);
t2 = System.nanoTime();
System.out.println("Time taken by 'fOne' ... " + (t2-t1));
}

public void fTwo(){
long t1, t2;
t1 = System.nanoTime();
int i = 10;
int j = 10;
int k = j*i;
System.out.println(k);
t2 = System.nanoTime();
System.out.println("Time taken by 'fTwo' ... " + (t2-t1));
}

}

这给出了以下输出: 100 “fOne”所花费的时间... 390273 100 “fTwo”所花费的时间... 118451 100 “fOne”所花费的时间... 53359 100 “fTwo”所花费的时间... 115936 按任意键继续 。 。 .

为什么第一次执行相同的方法比连续调用花费更多的时间(明显更多)?

我尝试向命令行提供-XX:CompileThreshold=1000000,但没有任何区别。

最佳答案

有几个原因。 JIT(Just In Time)编译器可能尚未运行。 JVM 可以针对不同的调用进行不同的优化。您正在测量耗时,因此您的计算机上可能正在运行 Java 之外的其他程序。处理器和 RAM 缓存在后续调用中可能是“热”的。

您确实需要进行多次调用(数千次)才能获得准确的每个方法执行时间。

关于java - 为什么连续两次调用同一方法会产生不同的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804620/

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