System.nano()调用耗时450 nano,超级慢,比new Object()的操作慢100倍。比System.currentMillis()慢20多倍。
经一群无聊好事者查证,System.nanoTime()在linux下的实现,最终调用clock_gettime系统函数。
100万次调用耗时,java语言中System.nanoTime()和C语言中的clock_gettime()调用时间基本一致,所以System.nanoTime()慢的原因就是系统调用clock_gettime。
无聊好事者请注意,自行测试System.nanoTime()性能时,要这样写:
而不能这样写:
经一群无聊好事者查证,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();
}
而不能这样写:
for (int i = 0; i < 1000 * 1000; ++i) {
System.nanoTime();
}
本文详细探讨了System.nanoTime()在Java中的性能表现,指出其在Linux环境下调用clock_gettime系统函数导致性能较慢的问题,并提供了正确的性能测试方法。
1967

被折叠的 条评论
为什么被折叠?



