Volevo monitorare le prestazioni del mio codice in modo da memorizzare l'ora di inizio e di fine utilizzando System.DateTime.Now
. Ho preso la differenza tra i due come il tempo di esecuzione del mio codice.Cronometro rispetto all'utilizzo di System.DateTime.Now per eventi di temporizzazione
Ho notato che la differenza non sembrava accurata. Così ho provato a utilizzare un oggetto Stopwatch
. Questo si è rivelato molto, molto più accurato.
Qualcuno può dirmi perché Stopwatch
sarebbe più preciso del calcolo della differenza tra ora di inizio e di fine utilizzando System.DateTime.Now
?
BTW, non sto parlando di un decimo di percentuale. Ottengo una differenza del 15-20%.
Sulla base del tuo commento alla risposta di Kelsey, sarei interessato a vedere il codice che registra gli orari di inizio e fine. Una differenza di 11 secondi (enorme) non ha nulla a che fare con le differenze di accuratezza delle due classi, quindi qualcos'altro deve andare avanti. –
Inoltre, se ti interessa solo il 'TimeSpan' tra due date, di solito è meglio usare' DateTime.UtcNow' invece di 'DateTime.Now', dato che di solito non vuoi i turni diurni e l'ora locale variazioni per influenzare il risultato. –
@DanielPryden, vedere [The Case Against DateTime.Now] (http://codeofmatt.com/2013/04/25/the-case-against-datetime-now/), che rende esattamente questo punto. +1 –