gpt4 book ai didi

java - Java 中的 System.nanoTime() 对于相同的输入给出不同的运行时间

转载 作者:行者123 更新时间:2023-12-01 06:34:43 24 4
gpt4 key购买 nike

我使用以下代码来测量程序的运行时间,

代码:

public static void main(String[] args) {
String a = "agtacgtcatacgtctagtactacgttca";
String b = "gtatccctagactsgtatcatacgtctat";
long startTime = System.nanoTime();
//This method call computes the Longest Common Sequence of the given 2 strings.
System.out.println(LCS.Linear.computeLCS(a, b));
long endTime = System.nanoTime();
System.out.println("Took "+(endTime - startTime) + " ns");
}

相同输入的示例输出:

运行 1:

gtacctagctgtactacgtta
Took 1971471 ns

运行 2:

gtacctagctgtactacgtta
Took 2242336 ns

为什么每次运行时间都不一样?

如何找到该方法调用的实际运行时间?

最佳答案

这些运行时间只有 2 毫秒!您不能期望它们在两次单独的运行中是相同的。来自文档:

This method provides nanosecond precision, but not necessarily nanosecond accuracy.

像这样的微观基准很难获得准确的数据。不确定性有几个来源:

  • 计算机上的其他进程
  • JVM 预热
  • JIT 编译
  • 垃圾收集

仅举几例。您应该至少尝试运行您的算法 10,000 次左右并取平均值。

进一步阅读:

关于java - Java 中的 System.nanoTime() 对于相同的输入给出不同的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863230/

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