Java使用System.nanoTime()统计代码运行时间

时间:2022-05-07 17:03:38

我们在统计代码的运行时间常常会用System.currentTimeMillis(),如下:

long startTime = System.currentTimeMillis();

doReallyLongThing();

long endTime = System.currentTimeMillis();

System.out.println("耗时: " + (endTime - startTime) + " 毫秒");

其实,Java提供了一个专用于测量使用时间,精度更高的方法:System.nanoTime()。

System.nanoTime()返回的是运行中的JVM的高精度时间源当前的值,以纳秒为单位。但需要注意的是,这个JVM的时间源与日期系统无关,它有可能是以未来时间点为起始的时间源。由于在一个JVM实例里,时间源的起始时固定的,所以它可以也只能用于使用时间的测量。

示例

long startTime = System.nanoTime();

doReallyLongThing();

long endTime = System.nanoTime();

System.out.println("耗时: " + (endTime - startTime) + " 纳秒");