首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.nanoTime() diff为0

System.nanoTime() diff为0
EN

Stack Overflow用户
提问于 2013-07-23 18:38:39
回答 1查看 804关注 0票数 0

我使用以下代码来尝试确定一个方法调用需要多长时间才能执行:

代码语言:javascript
复制
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 (finish - start)大多数时候是0。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 18:42:50

这是什么原因?

System.nanoTime()的分辨率取决于设备和操作系统,所以如果你设备的内部时钟分辨率太高,System.nanoTime()将无法提高分辨率。

有没有更好的方法来测量这个方法执行和返回所花费的时间?

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17807815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档