Vediamo in questo breve articolo come testare le performance dei nostri algoritmi scritti in C#. Il metodo risolutivo è assolutamente analogo a quanto accade in JAVA: occorre calcolare il tempo corrente in nanosecondi proveniente dal clock di sistema, eseguire l’algoritmo e subito dopo eseguire la differenza dal tempo corrente a quello precedentemente calcolato. Ovviamente nel frattempo è passato un certo tempo per via dell’algoritmo che abbiamo posizionato tra i due calcoli.
Il concetto è più lungo a dirsi che a farsi, ecco il codice:
long time = DateTime.Now.Ticks;
for (int i = 0; i < 100000000; i++)
{
//non fa nulla
}
Console.WriteLine("Tempo trascorso: " + (new TimeSpan(DateTime.Now.Ticks - time).TotalMilliseconds) + " ms");
Come possiamo notare, C# non ci mette a disposizione una precisione superiore al millisecondo. Per ovviare a questo problema, occorre implementarsi da soli apposite classi che leggano direttamente dal processore il timestamp. Qualcuno lo ha già fatto per noi e potete trovare la classe DateTimePrecise su CodeProject molto utile allo scopo. Buon lavoro! ![]()
Mi chiamo Denis Billi, ho 25 anni e sono della provincia di Ravenna. Mi sono laureato nell'estate del 2008 presso la facoltà di Ingegneria Informatica dell'università di Bologna e attualmente sto seguendo i corsi per la Laurea Specialistica in Ingegneria Informatica sempre all'università di Bologna.
Ciao a tutti!
Innanzitutto faccio i complimenti a Denis per il blog; l’ho scoperto da poco, ma da quanto ho visto finora, è ben fatto e contiene informazioni molto utili. E poi è stato utilizzato WordPress! Anche io ho deciso di affidarmi a questa piattaforma per realizzare un blog, il primo in assoluto per me; per ora sto raccogliendo un po’ di idee per quanto riguarda l’aspetto grafico, e in queste pagine ce ne sono
Chiedo scusa per questa breve digressione e vengo al dunque.
A partire dal .NET Framework 2.0, nel namespace System.Diagnostics, è presente la classe Stopwatch che fornisce metodi e proprietà che possono essere utilizzati per misurare con precisione il tempo trascorso.
Di seguito ho postato il caso più semplice possibile di utilizzo:
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
/* RUN */
stopwatch.Stop();
Console.WriteLine(“Tempo trascorso: ” + stopwatch.Elapsed.ToString());
}
Per un approfondimento alla classe, rimando alle MSDN.
Buon Lavoro!
Ciao nioadminer e grazie per la tua visita e soprattutto per i complimenti! Non preoccuparti per la digressione, spero che quel poco che ho scritto sia utile
Ho visto la tua soluzione e devo dire che è molto interessante, non conoscevo l’oggetto Stopwatch ma credo possa essere molto utile in certe occasioni ed in un mondo totalmente a oggetti come in C# devo dire che mi sorprendeva la mancanza di un oggetto simile. Ora che lo conosco voglio testarlo in qualche algoritmo dedicato 
Grazie mille e torna a trovarmi, a presto
Denis