2009-08-16 13 views

risposta

13

Partenza classe Stopwatch:

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

// your code here 

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

La classe Stopwatch offre tempi di precisione in .NET. È in grado di misurare il tempo con una sensibilità di circa 100 secondi di nanosecondi (frazioni di millisecondi). Per ottenere la risoluzione esatta, leggere il valore di Stopwatch.Frequency.

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

Inoltre, assicurarsi di eseguire il codice più volte (il numero di volte che è fattibile) per ottenere una migliore tempo medio, così come per ridurre gli effetti delle fluttuazioni di carico della CPU.

8

Come altri hanno detto, la classe Stopwatch è un bene per il semplice lato distribuzione delle cose. Altre punte da tenere a mente, però:

  • Il codice può generare oggetti che dovranno essere garbage collection dopo aver fermato il cronometro
  • Al contrario la vostra sincronizzazione può includere altri oggetti in fase di garbage collection, anche se non hanno nulla a che fare con il tuo codice
  • Se inizi a cronometrare prima di eseguire il tuo metodo per la prima volta, includerà il tempo JIT
  • Se impieghi un tempo molto breve, ciò porta a risultati molto imprevedibili - per il benchmarking Tendo a preferire il codice in esecuzione per molti secondi, per rendere conto per l'applicazione di essere interrotto da altri processi, ecc

Se siete interessati a benchmarking, ho il progetto MiniBench che devo riuscire a lavorare di nuovo ad un certo punto - non è del tutto dove voglio che finiscono, ma è un inizio. Parlo di più di ciò che voglio ottenere con esso in this blog post.

+0

Grazie personali per MiniBench, Jon - è diventato per me uno strumento inestimabile. –

+0

@C Rogers: probabilmente l'hai usato più di quanto ne abbia io! Ci tornerò davvero un po 'di tempo ... la scrittura è stata piuttosto presa in considerazione per il momento però :( –

0

Si consiglia di utilizzare uno strumento di profilatura come ANTS per verificare la velocità dell'applicazione e trovare il codice lento. Ciò ti consentirà di eseguire un test riga per riga dei tempi di esecuzione.

0

Se vuoi semplicemente, basta mettere un ciclo di ripetizione N intorno ad esso e utilizzare StopWatch (o solo un orologio da polso) e dividere per N. Ad esempio, se vuoi microsecondi, lascia N = 1000000. Se sei preoccupato per quanto riguarda il sovraccarico del ciclo, basta srotolarlo di un fattore di 10.

Problemi correlati