gpt4 book ai didi

java - 如何使用 currentTimeMillis() 方法获取小部分执行时间

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

我需要获取 Java 中函数的执行时间。我知道可以使用两种方法:currentTimeMillis();nanoTime(); 但我了解到,如果我需要挂钟时间,currentTimeMillis(); 更准确(即,就好像我正在从挂钟测量执行花费了多少时间。而不是处理时间)。

但是currentTimeMillis();不能给我小分数。例如,如果执行时间小于 1 毫秒,则返回 0。即使它小于 1,例如 0.05 毫秒,我也需要该时间。这是方法返回 0 时的简单示例。

long startTime=System.currentTimeMillis();
for(int x=0; x<10;x++)
{
System.out.println("-");
}

long execTime=System.currentTimeMillis() - startTime;

即使它返回时间,它也会返回 30 或 40。但是,我需要一个更精确的数字,例如 30.00012。另外,方法返回类型是long,但我将其更改为double,因为我想要 float ,这有什么坏处吗?你能告诉我正确的方法来测量我的java方法执行挂钟时间的小分数(例如不是8.0而是8.287335)

最佳答案

I am aware of two methods I can use: currentTimeMillis() and nanoTime(). But I have learned that currentTimeMillis() is more accurate if I need the wall-clock time (i.e, as if I am measuring from the wall-clock how much time the execution took. Not the processing time).

这只是部分准确。

这两个函数都返回挂钟时间,而不是 CPU 时间。

除了精度之外,不同之处在于 currentTimeMillis() 是相对于众所周知的时间点,而 nanoTime() 是相对于某个任意点及时。这意味着您无法轻松地将 nanoTime() 的结果转换为您和我都能理解的时间戳。

您仍然可以使用它来测量挂钟间隔:只需调用 nanoTime() 两次并取差值。这几乎就是它的设计目的。

最后,如果您使用它来分析一些代码,请阅读 How do I write a correct micro-benchmark in Java?有很多微妙之处。

关于java - 如何使用 currentTimeMillis() 方法获取小部分执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173414/

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