2009-08-16 21 views

Respuesta

13

Mira la clase Stopwatch:

Stopwatch sw = new Stopwatch(); 
sw.Start(); 

// your code here 

sw.Stop(); 
TimeSpan elapsedTime = sw.Elapsed; 
14

La clase Stopwatch ofrece sincronización de alta precisión en .NET. Es capaz de medir el tiempo con una sensibilidad de alrededor de 100 segundos de nanosegundos (fracciones de milisegundos). Para obtener la resolución exacta, lea el valor de Stopwatch.Frequency.

var timer = System.Diagnostics.Stopwatch.StartNew(); 
// Run code here. 
var elapsed = timer.ElapsedMilliseconds. 

También asegúrese de ejecutar el código ( repetidamente tantas veces como sea posible) para obtener un mejor promedio de tiempo, así como para reducir los efectos de las fluctuaciones de la carga de la CPU.

8

Como han dicho otros, la clase Stopwatch es bueno para el lado de la distribución sencilla de las cosas. Otras partes a tener en cuenta, sin embargo:

  • Su código puede generar objetos que tendrán que ser basura recogida después de haber dejado el cronómetro
  • el contrario su sincronización puede incluir otros objetos que se recogen la basura, incluso si no tienen nada que ver con su código
  • Si inicia la temporización antes de ejecutar su método por primera vez, incluirá el tiempo JIT
  • Si se toma muy poco tiempo, eso genera resultados muy impredecibles: para la evaluación comparativa Tiendo a preferir ejecutar el código por muchos segundos, a la cuenta para la aplicación de ser interrumpido por otros procesos, etc.

Si usted está interesado en la evaluación comparativa, tengo el proyecto MiniBench que debo recibir todo el año a trabajar de nuevo en algún momento - no es exactamente donde quiero que se terminar, pero es un comienzo. Hablo más sobre lo que quiero lograr con él en this blog post.

+0

Gracias personales por MiniBench, Jon: se ha convertido en una herramienta invaluable para mí. –

+0

@C Rogers: ¡Probablemente lo haya usado más de lo que tengo entonces! Realmente lo volveré a hacer algún tiempo ... escribir ha tomado más bien por el momento sin embargo :( –

0

Recomiendo usar una herramienta de creación de perfiles como ANTS para probar la velocidad de su aplicación y encontrar código lento. Esto le permitirá hacer una prueba línea por línea de los tiempos de ejecución.

0

Si quiere algo simple, simplemente coloque un ciclo de iteración N alrededor de él y use Cronómetro (o simplemente un reloj de pulsera) y divida por N. Por ejemplo, si quiere microsegundos, deje N = 1000000. Si está preocupado sobre la sobrecarga del ciclo, simplemente desenrrollarlo por un factor de 10.

Cuestiones relacionadas