Я только что нашел System.currentTimeMillis не является точным на Windows XP, теперь я попытался System.nanoTime()
с тем же кодом.
Поскольку 1ms = 1,000,000ns
, так что я думаю, что результат долженбыть 15,000,000ns
, но это не так.
См. пример кода:
public class NanoTime {
public static void main(String[] args) {
long start = 0;
long end = 0;
while (true) {
if (start == 0) {
start = System.nanoTime();
} else {
long current = System.nanoTime();
if (current != start) {
end = current;
break;
}
}
}
System.out.println("The time interval of your OS: " + (end - start) + "ns");
}
}
Результат:
The time interval of your OS: 655ns
Кажется, это намного лучше, чем System.currentTimeMillis()
,Но почему?Можем ли мы поверить в этот результат?