我想比较我的应用程序中某些操作的性能。
除了使用Date对象之外,还有什么更精确的吗?
答案 0 :(得分:7)
public static long nanoTime()
- 返回最精确的可用系统计时器的当前值,以纳秒为单位。
作为Zach Scrivener states in his answer:
我的猜测是,因为System。nanoTime()使用“最精确的 可用的系统计时器“显然只有 系统上的毫秒级精度,你无法获得更好的效果。
答案 1 :(得分:2)
如果您通过减去两个时间戳来衡量经过时间,则应使用System.nanoTime()
来获取这些时间戳。这就是它的用途。
答案 2 :(得分:1)
要获得CPU时间,您可以使用线程管理Bean的getCurrentThreadCpuTime
它返回实际线程使用的CPU时间,以纳秒为单位:
ThreadMXBean threadMX = ManagementFactory.getThreadMXBean();
long time = threadMX.getCurrentThreadCpuTime();
// do something
time = threadMX.getCurrentThreadCpuTime() - time; // CPU time in nanoseconds
检查documentation以获取详细信息以及未启用CPU时间测量等问题。