|
|
道上混的西红柿 · 快用Django REST ...· 2 年前 · |
|
|
热心的西装 · SQLServer之删除视图 - 掘金· 2 年前 · |
|
|
近视的炒面 · Webpack+pdfjs ...· 2 年前 · |
|
|
有情有义的板凳 · 只需1秒,用python开发Excel报表也 ...· 2 年前 · |
|
|
逃课的手套 · java调用shell - OSCHINA ...· 2 年前 · |
我正在尝试从
Date
获取微秒数,但我做不到。
Date date = new Date()
发布于 2012-01-06 19:16:05
不,
Date
只存储毫秒精度的值。如果你想要微秒级的精确度,你可能想把
JSR-310
或者
java.sql.Timestamp
看作一个黑客--但是不要期望任何像
Calendar
和
DateFormat
这样的内置类能够处理超过毫秒级的东西。
如果你正在尝试执行计时(例如基准测试),你应该使用
System.nanoTime
,但它应该只用于秒表之类的用例-它不会以一种有意义的方式给出“当前挂钟时间”。
发布于 2012-01-06 19:41:46
我所做的就是定期找出currentTimeMillis和nanoTime()之间的差异(因为这会有一些漂移),并对currentTimeNS使用nanoTime() + OFFSET。(更具体地说,我使用RDTSC机器码指令,它带有更多的吹毛求疵;)
然而,随着时间的推移,它的精确度不如currenTimeMillis(),后者本身在一小时内可能会漂移许多毫秒。
发布于 2012-01-06 19:39:57
要以微秒为单位测量时间,需要使用System.nanoTime()函数,该函数将根据系统可用的最精确时钟返回以微秒为单位的时间。
对于用户来说,它的作用方式与System.currentTimeMilis()对于毫秒的作用几乎相同,您只需定义开始和结束时间,然后取消差异以找出操作所用的时间。例如:
long startTime = System.nanoTime();
//Do some kind of processing;
//loop, IO, whatever you want to measure
long endTime = System.nanoTime();
long elapsedTime = endTime - startTime;
最后一段可以缩短,为了简单起见,我将其保留为冗长:
long elapsedTime = System.nanoTime() - startTime;
这不应该用于测量实时,因为它几乎没有意义,也不能保证它甚至可以与它相媲美。以上所有信息都可以从 System 的Java API文档中获得。
https://stackoverflow.com/questions/8756982
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2026 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司
ICP备案/许可证号:
粤B2-20090059
粤公网安备44030502008569号
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号
|
|
热心的西装 · SQLServer之删除视图 - 掘金 2 年前 |