|
|
1
212
这个答案是在2011年从当时运行在当时操作系统上的sunjdk实际运行的角度写出来的。那是很久以前的事了! leventov's answer
那篇文章是错误的,而且
那么,在Windows上,这个 是 FAQ for clock_gettime(CLOCK_REALTIME) ,上面写着:
遗憾的是,没有提到SPARC或Solaris。当然,我们不知道IBM JVM做什么。但现代Windows和Linux上的Sun JVM做到了这一点。 |
|
|
2
35
我做了一些搜索,发现如果一个人是学究,那么是的,它可能被认为是无用的…在特定情况下…这取决于你的需求对时间的敏感程度。。。 退房 this quote
Java还有一个 caveat for the nanoTime() 方法:
似乎可以得出的唯一结论是,nanoTime()不能作为一个准确的值。因此,如果不需要测量相隔仅纳秒的时间,那么即使结果返回值为负值,该方法也足够好。然而,如果您需要更高的精度,他们似乎建议您使用JavaRTS。
|
|
|
3
27
从Java 7开始,
JVM/JDK实现负责消除在调用底层操作系统实用程序(例如,在 Tom Anderson's answer ). 这个问题的大多数其他旧答案(写于2009-2012年)都表示FUD可能与Java5或Java6相关,但与现代版本的Java不再相关。
然而,值得一提的是,尽管JDK提供了担保
使用
|
|
|
4
18
无需争论,只需使用源代码即可。 在这里,针对Linux的SE 6可以得出您自己的结论:
|
|
5
7
Linux纠正了CPU之间的差异,但Windows没有。我建议您假设System.nanoTime()仅精确到1微秒左右。获得更长时间的一种简单方法是调用foo()1000次或更多次,然后将时间除以1000。 |
|
|
6
5
我只在多核机器上测试。 |
|
|
7
5
我看到了一个负面消息 逝去
这是在运行AIX的IBM P690(多核)硬件上使用IBM v1.5 JRE 64位实现的。我只见过这种错误发生一次,所以它似乎非常罕见。我不知道原因-是硬件特定的问题,JVM缺陷-我不知道。一般来说,我也不知道nanoTime()的准确性会受到什么影响。 为了回答最初的问题,我并不认为纳米时间是无用的——它提供了亚毫秒的计时,但它确实存在(不仅仅是理论上的)不准确的风险,你需要考虑到这一点。 |
|
|
8
2
对于运行Windows XP和JRE 1.5.0_06的Core 2 Duo来说,这似乎不是问题。 在一个有三个线程的测试中,我看不到System.nanoTime()正在倒退。处理器都很忙,线程偶尔会进入睡眠状态以引起线程的移动。
|
|
9
2
|
|
|
10
2
Why I get a negative elapsed time using System.nanoTime()?
如果System.nanoTime()返回执行的coreID,那就太酷了。 |
|
|
11
1
Java是跨平台的,nanoTime依赖于平台。如果您使用Java-when,请不要使用nanoTime。我发现使用此函数的不同jvm实现中存在真正的bug。 |
|
|
12
0
|
|
13
0
|
|
14
-3
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 8 月前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 8 月前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 8 月前 |
|
|
rudraraj · java中未声明最终变量 9 月前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 9 月前 |