gpt4 book ai didi

java - Java中for循环的不同执行时间

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:48 26 4
gpt4 key购买 nike

我是 Java 新手。我已经完成了以下编码。

class TimeComplex{
public static void main(String []args){
long startTime, stopTime, elapsedTime;

//first call
startTime = System.currentTimeMillis();
System.out.println("\nstart time : " + startTime + "\n");
calcForLoop();
stopTime = System.currentTimeMillis();
System.out.println("stop time : " + stopTime + "\n");
elapsedTime = stopTime - startTime;
System.out.println("\t1st loop execution time : " + elapsedTime+ "\n");

//second call
startTime = System.currentTimeMillis();
System.out.println("start time : " + startTime + "\n");
calcForLoop();
stopTime = System.currentTimeMillis();
System.out.println("stop time : " + stopTime + "\n");
elapsedTime = stopTime - startTime;
System.out.println("\t2nd loop execution time : " + elapsedTime + "\n");

//third call
startTime = System.currentTimeMillis();
System.out.println("start time : " + startTime + "\n");
calcForLoop();
stopTime = System.currentTimeMillis();
System.out.println("stop time : " + stopTime + "\n");
elapsedTime = stopTime - startTime;
System.out.println("\t3rd loop execution time : " + elapsedTime + "\n");
}

static void calcForLoop(){
for(long i = 12_85_47_75_807L; i > 0; i--);
}
}

代码长时间运行for循环只是为了增加程序的执行时间。当第一次调用 calcForLoop() 时,程序的执行时间最长,当第二次调用相同的方法时,程序比第一次调用和第三次调用花费的时间更少方法 calcForLoop() 小于或等于第二次执行时间。我运行这个程序 5-6 次,我得到了相同的执行时间模式。 This is the output of my program.

我的问题是,当要执行的代码在所有三个时间都保持不变时,为什么会发生这种情况。编译器是否进行了任何代码优化,或者它取决于操作系统环境。当重复执行本例中的同一代码块时,编译器会进行何种优化?

最佳答案

JIT (just in time) compiler编译 JVM 检测到的代码正在执行很多,这说明了性能的提高。在进行此类编译时,性能实际上可能会降低

通常在性能测试中考虑到这种影响 - 您执行代码几千次,然后开始基准测试。

关于java - Java中for循环的不同执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510826/

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