【发布时间】:2010-01-19 21:50:12
【问题描述】:
我想比较我的应用程序中某些操作的性能。
除了使用 Date 对象,还有什么更精确的吗?
【问题讨论】:
-
您问的是精度还是准确度?它们不一样。
我想比较我的应用程序中某些操作的性能。
除了使用 Date 对象,还有什么更精确的吗?
【问题讨论】:
public static long nanoTime() - 返回最精确的可用系统计时器的当前值,以纳秒为单位。
作为 Zach Scrivener states in his answer:
我的猜测是因为 System.nanoTime() 使用“最精确 可用的系统计时器”,显然只有 在您的系统上达到毫秒精度,没有比这更好的了。
【讨论】:
如果您通过减去两个时间戳来测量经过的时间,您应该使用System.nanoTime() 来获取这些时间戳。这就是它的用途。
【讨论】:
要获取 CPU 时间,您可以使用线程管理 Bean 的 getCurrentThreadCpuTime。
它以纳秒为单位返回实际线程使用的 CPU 时间:
ThreadMXBean threadMX = ManagementFactory.getThreadMXBean();
long time = threadMX.getCurrentThreadCpuTime();
// do something
time = threadMX.getCurrentThreadCpuTime() - time; // CPU time in nanoseconds
查看documentation 了解详细信息以及未启用 CPU 时间测量等问题。
【讨论】: