使用Java访问系统时钟的简单方法是什么,这样我就可以计算事件的运行时间?
发布于 2008-10-27 11:54:45
我会避免使用System.currentTimeMillis()
来测量运行时间。currentTimeMillis()
返回“挂钟”时间,该时间可能会发生变化(例如:夏令时、管理员用户更改时钟),并会扭曲您的时间间隔测量。
另一方面,System.nanoTime()
返回自‘某个参考点’(例如,JVM启动)以来的纳秒数,因此不会受到系统时钟变化的影响。
发布于 2008-10-27 02:28:22
这是一些示例代码。
long startTime = System.currentTimeMillis();
// Run some code;
long stopTime = System.currentTimeMillis();
System.out.println("Elapsed time was " + (stopTime - startTime) + " miliseconds.");
发布于 2008-10-27 03:58:14
Apache Commons-Lang还提供了适合您的用途的StopWatch类。它使用System.currentTimeMillis(),因此您仍然会遇到分辨率问题,但您可以暂停并执行圈速等操作。我现在使用它作为事件统计的标准。
http://commons.apache.org/lang/api-release/org/apache/commons/lang/time/StopWatch.html
https://stackoverflow.com/questions/238920
复制相似问题