pen*_*pen 17 java performance measurement
Java提供了两种获取当前时间的方法:System.nanoTime()和System.currentTimeMillis().第一个给出一个纳秒的结果,但实际精度比那个(很多微秒)差很多.
JVM是否已为每台特定机器提供最佳价值?否则,是否有一些Java库可以通过绑定到特定系统来提供更精细的测量?
jjn*_*guy 16
获得超精确时间测量的问题在于某些处理器不能/不能提供如此微小的增量.
据我所知,System.currentTimeMillis()而且System.nanoTime()是你将能够找到最好的测量.
请注意,两者都返回一个long值.
在Java测量时间到纳秒级别时,这有点毫无意义; 偶尔的GC命中将很容易消除这可能给出的任何准确性.在任何情况下,文档都指出虽然它提供纳秒精度,但它与纳秒精度不同; 并且有些操作系统在任何情况下都不报告纳秒(这就是为什么你在访问时会发现量化为1000的答案;这不是运气,而是限制).
不仅如此,而且取决于操作系统实际实现的功能,您可能会发现无论如何都会出现量化结果(例如总是以64或128而不是中间值结束的答案).
值得注意的是,该方法的目的是找到一些(附近)开始时间和现在之间的两个时间差; 如果你在长时间运行的应用程序的开头采用System.nanoTime(),然后很长一段时间后采用System.nanoTime(),它可能已经远离实时.所以你应该只在不到1秒的时间内使用它; 如果你需要比这更长的运行时间,毫秒就足够了.(如果不是,那么补上最后几个数字;你可能会给客户留下深刻印象,结果也同样有效.)
| 归档时间: |
|
| 查看次数: |
17611 次 |
| 最近记录: |