gpt4 book ai didi

java - 为什么 "long var = System.nanoTime()"和 "System.nanoTime()"的使用时间如此不同?

转载 作者:行者123 更新时间:2023-12-02 08:41:36 29 4
gpt4 key购买 nike

我做了这样的基准:

for (int i = 0; i < 1000 * 1000; ++i) {
long var = System.nanoTime();
}

在我的jdk6.0电脑上需要41毫秒

以下代码仅花费 1 毫秒!!!

for (int i = 0; i < 1000 * 1000; ++i) {
System.nanoTime();
}

我认为时间可能是由 long var 花费的,所以我做了这样的测试:

 for (int i = 0; i < 1000 * 1000; ++i) {
long var = i;
}

仅需 1 毫秒!!!

那么,为什么第一个代码块这么慢?我是中国人。抱歉我的英语不好!

最佳答案

这实际上取决于您如何运行基准测试。您很可能会运行 <1ms,因为 JVM 并未真正运行您的代码:它已确定该代码未被使用并跳过它:

for (int i = 0; i < 1000 * 1000; ++i) {
long var = i;
}

相当于

//for (int i = 0; i < 1000 * 1000; ++i) {
// long var = i;
//}

并且 JVM 可能正在运行第二个版本。

您应该阅读how to write a micro benchmark in Java或使用基准测试库,例如 caliper .

关于java - 为什么 "long var = System.nanoTime()"和 "System.nanoTime()"的使用时间如此不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174421/

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