gpt4 book ai didi

android - System.currentTimeMillis() 工作错误

转载 作者:行者123 更新时间:2023-11-29 16:10:38 24 4
gpt4 key购买 nike

我需要秒表,我使用了 http://www.goldb.org/stopwatchjava.html

效果不佳,所以我尝试每 1000 毫秒写出一个值:

stopWatch.start();
HandlerScrollBar.postDelayed(TtScroll, 1000);

private Runnable TtScroll = new Runnable() {
public void run() {
long time = stopWatch.getElapsedTime();
HandlerScrollBar.postDelayed(TtScroll,(long) 1000);
Log.d(TAG, Long.toString(time));
}
};

我可以在 CatLog 中看到每秒的时间值,这是结果:

enter image description here

实时时间最多为 +5 毫秒,但在 Column 中至少为 +3 秒!这怎么可能?和

一样
new Date().getTime().

是否有一些 StopWatch 类可以按预期通过此测试?

谢谢。

最佳答案

如果您要测量耗时,并且希望它是正确的,则必须使用 System.nanoTime()。你不能使用 System.currentTimeMillis(),除非你不介意你的结果是错误的。

nanoTime 的目的是测量耗时,而 currentTimeMillis 的目的是测量挂钟时间。您不能将其用于其他目的。原因是没有计算机的时钟是完美的;它总是漂移,偶尔需要纠正。

由于 nanoTime 的目的是测量耗时,因此它不受任何这些小修正的影响。我建议选择 nanoTime(),因为它在这些微计算中具有更高的准确性。

用于极其精确地测量耗时。从它的 javadoc:

long startTime = System.nanoTime(); 

//...被测代码...

long estimatedTime = System.nanoTime() - startTime;

关于android - System.currentTimeMillis() 工作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674673/

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