Vi en Internet que se suponía que debía usar System.nanoTime() pero eso no funciona para mí, me da el tiempo con milisegundos de precisión. Solo necesito los microsegundos antes y después de que se ejecute mi función para saber cuánto tiempo lleva. Estoy usando Windows XP.¿Cómo puedo medir el tiempo con microsegundos de precisión en Java?
Básicamente, tengo este código que, por ejemplo, hace 1 millón hasta 10 millones de inserciones en una lista vinculada a java. El problema es que no puedo medir la precisión correcta; a veces toma menos tiempo insertar todo en la lista más pequeña.
He aquí un ejemplo:
class test
{
public static void main(String args[])
{
for(int k=1000000; k<=10000000; k+=1000000)
{
System.out.println(k);
LinkedList<Integer> aux = new LinkedList<Integer>();
//need something here to see the start time
for(int i=0; i<k; i++)
aux.addFirst(10000);
//need something here to see the end time
//print here the difference between both times
}
}
}
hice esto muchas veces - hubo un bucle exterior hacerlo 20 veces para cada k - pero el resultado no son buenas. A veces toma menos tiempo hacer 10 millones de inserciones que 1 millón, porque no estoy obteniendo el tiempo correcto medido con lo que estoy usando ahora (System.nanoTime())
Edit 2: Yes, I ' m usando Sun JVM.
Editar 3: Es posible que haya hecho algo mal en el código, voy a ver si al cambiarlo hago lo que quiero.
Editar 4: Mi error, parece que System.nanoTime() funciona. Uf.
¿Qué versión de Java? En mi máquina XP con JDK1.6.0_06, nanoTime() tiene precisión hasta los últimos lugares decimales. Supongo que su versión arroja valores que siempre terminan en tres ceros. – basszero
Sun JVM no es suficiente, ¿qué VERSIÓN? (Su respuesta fue correcta, no hice la pregunta correcta. Supongo que todos usan Sun JVM) – basszero
Java -version en el cmd me da: versión java "1.7.0-ea" Y otras 2 líneas. De cualquier manera, fue un error en mi código. Lo siento, no pude encontrar el error incluso después de un tiempo buscándolo. –