2010-06-09 6 views
7

Estoy intentando evaluar el rendimiento de algún código. Estoy usando un cronómetro. Cuando imprimo el número de milisegundos, siempre me dice 0, así que pensé que probaría la cantidad de tics. Estoy viendo que el número de tics es de 20 000 a 30 000. Al mirar el MSDN en TimeSpan.TicksPerMillisecond dice que son 10 000 tics por milisegundo. En ese caso, ¿por qué los milisegundos transcurridos en mi cronómetro no aparecen como 2 o 3?¿Por qué ElapsedTicks X 10 000 no es igual a ElapsedMilliseconds para .Net's Stopwatch?

¿Qué me estoy perdiendo? Incluso he superado el resultado en la misma línea. Esto es lo que obtengo

Time taken: 26856 ticks, 0 ms 

Y es constante.

EDITAR (Agregué un código) Este es mi código que tengo corriendo en un bucle. Me doy cuenta de que estoy creando un nuevo cronómetro cada vez que no es muy eficiente, pero no veo cómo podría sesgar mis resultados. Gracias chicos

Dim SW = New Stopwatch() 
SW.Reset() 
SW.Start() 
MethodCall() 
SW.Stop() 
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds)) 
+0

¿Tal vez podría publicar un ejemplo de trabajo completo? –

+1

Publique su código real, en lugar de solo una descripción del mismo y el resultado. –

+0

Agregó un código. – uriDium

Respuesta

10

Stopwatch ticks son diferentes de DateTime Ticks.

La longitud de una garrapata Stopwatch depende de la frecuencia del cronómetro (un tick es de un segundo dividido por la frecuencia, como se describe en the MSDN documentation for Stopwatch.ElapsedTicks.

Se podría argumentar que Stopwatch.ElapsedTicks fue una mala elección de un nombre para este propiedad debido a la posibilidad de confusión con los tics DateTime. Hubiera preferido algo como ElapsedRawTicks, o algún otro calificador adjetival adecuado para insinuar que estos no son Ticks estándar.

+0

Oh, estaba usando TimeSpan.TicksPerMillisecond. Gracias por el enlace. – uriDium

0

Asegúrese de que realmente está comenzando un Stopwatch y que está utilizando ya sea Stopwatch.ElapsedMilliseconds o Stopwatch.Elapsed.TotalMilliseconds.

Cuestiones relacionadas