que tiene una interesante problema "viaje en el tiempo" en la actualidad, con el siguiente código:tiempo de seguimiento en Java: el uso de currentTimeMills()
for (int i = 0; i < 1; i++){
long start = System.currentTimeMillis();
// Some code here
System.out.print(i + "\t" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
// Some code here
System.out.println("\t" + (System.currentTimeMillis() - start));
}
y me dieron el resultado
0 15 -606
Y parece que no es repetible Alguien tiene alguna pista sobre lo que sucedió dentro durante el tiempo de ejecución? Simplemente curioso ...
Nueva edición: He utilizado una pequeña prueba para confirmar las respuestas a continuación. Puedo ejecutar el programa y cambiar el tiempo del sistema durante la carrera, y finalmente repetir el "viaje en el tiempo":
0 -3563323 163
Caso cerrado. ¡Gracias chicos!
Más palabras: tanto currentTimeMillis() como nanoTime() se basan en el temporizador del sistema, por lo que no serán monótonas si el temporizador del sistema se actualiza (se regresa, específicamente). Es mejor utilizar un temporizador basado en Internet para tales casos.
No estoy seguro 'currentTimeMillis' es monotónico. Puede tener mejores resultados con 'System.nanoTime()' que está diseñado especialmente para medir intervalos. – Rom1
@ asksw0rder: ¿puede ejecutar el mismo programa nuevamente y actualizar qué segundo resultado es? –
@ asksw0rder ¿Cuál es la variable i? ¿cuál es su valor? No tiene sentido obtener 0 en la primera salida. – sfrj