TimeTracker: una classe C# per misurare il tempo di esecuzione del codice

TimeTracker: una classe C# per misurare il tempo di esecuzione del codice

Una delle esigenze più sentite - e più importanti - quando si scrive codice è quella di trovare il modo di svolgere l'attività richiesta garantendo le migliori prestazioni possibili. Per far questo è indispensabile dotarsi di uno strumento che ci consentano di misurare il tempo di esecuzione di ciascuna operazione o blocco di operazioni, possibilmente in unità di tempo adeguate (millisecondi o nanosecondi) e con una precisione il più possibile accurata.

Ovviamente, tale strumento deve dare la possibilità di misurare più operazioni all'interno del medesimo contesto di esecuzione,  in modo che sia possibile definire vari lap e confrontarli tra loro: insomma, stiamo parlando in buona sostanza di qualcosa che fornisca le funzionalità tipiche di un comune cronometro.

Con questo obiettivo in mente alcuni anni fa ho sviluppato una classe che consente di fare esattamente questo. Il suo nome è TimeTracker e può essere utilizzata per creare un numero n di lap nel corso dell'esecuzione di un qualsiasi programma. Ciascun lap, una volta creato, può essere confrontato con qualsiasi altro lap sulla base di uno dei formati temporali disponibili: nanosecondi, microsecondi, millisecondi, secondi, minuti o ore.

Questo è un esempio di utilizzo:

L'esempio è relativo a una classica applicazione ASP.NET MVC, ma la classe può essere facilmente utilizzata in qualsiasi altro contesto. E' anche possibile instanziare l'oggetto globalmente - ad esempio nella classe Startup  di un progetto ASP.NET 4 / ASP.NET Core - e utilizzarlo per effettuare misurazioni in punti diversi e/o lungo l'intero ciclo vita dell'applicazione.

Questo è il codice sorgente completo:

La classe è interamente commentata, quindi non c'è bisogno di entrare ulteriormente nel dettaglio. Nonostante si tratti di un codice scritto ormai diversi anni fa, continua a rivelarsi ancora oggi uno strumento estremamente utile per analizzare in modo accurato le performance di qualsiasi tipo di codice sorgente scritto in C#.

Per il momento è tutto: felice Time Tracking!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.