经一群无聊好事者查证,System.nanoTime()在linux下的实现,最终调用clock_gettime系统函数。
100万次调用耗时,java语言中System.nanoTime()和C语言中的clock_gettime()调用时间基本一致,所以System.nanoTime()慢的原因就是系统调用clock_gettime。
无聊好事者请注意,自行测试System.nanoTime()性能时,要这样写:
for (int i = 0; i < 1000 * 1000; ++i) {
long v = System.nanoTime();
}
long v = System.nanoTime();
}
而不能这样写:
for (int i = 0; i < 1000 * 1000; ++i) {
System.nanoTime();
}
System.nanoTime();
}