gpt4 book ai didi

java - System.nanoTime() 差异为 0

转载 作者:行者123 更新时间:2023-12-01 14:19:03 27 4
gpt4 key购买 nike

我有以下代码来尝试确定方法调用需要多长时间执行:

long start = System.nanoTime();

diag(); // diag() is a native method, called via JNI.

long finish = System.nanoTime();

System.out.println("update() took: " + Long.toString(finish - start));

在特定 Android 设备 (Xperia P) 上执行时,此 diff(完成 - 开始)大多数时候为 0。

这是什么原因呢?有没有更好的方法来尝试测量该方法执行和返回所需的时间?

*请注意,其他 Android 设备的行为有所不同

最佳答案

What is the reason for this?

System.nanoTime() 的分辨率取决于设备和操作系统。因此,如果您设备的内部时钟分辨率太高,System.nanoTime() 将无法改善情况。

is there any better way to try measuring the time this method takes to execute and return?

您可以多次运行该方法以增加花费的时间。但请注意,基准测试是一门复杂的艺术。您可以从这篇文章开始:How do I write a correct micro-benchmark in Java?虽然它关注的是热点 JVM,但大多数原则都适用于 Dalvik。

关于java - System.nanoTime() 差异为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807815/

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