我们在统计代码的运行时间常常会用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) + " 纳秒");