Ausführungszeit in .Net Programmen messen


Thomas Wölfer
Thomas Wölfer

16. März 2005


Untersucht man .Net Programme in Bezug auf ihre Performance, dann bleibt einem letzten Endes nicht viel anderes übrig, als die Ausführungszeiten von unterschiedlichen Implementierungen kritischer Funktionen schlicht und ergreifend zu messen. Kostet ein Typecast mehr als man meint - und sollte man darum eine andere Implementierung wählen? Wie weh tut das boxing und unboxing an 'kritischen' Stellen? Lauter Fragen, die sich nur mit einer Messung beantworten lassen.

Was man sich dazu wünscht ist eine Klasse, die Messungen mit den Timern aus der Performance Counter API durchführen kann - ansonsten hat man Probleme, Zeitperioden im Millisekundenbereich vernünftig zu erfassen. Sowas gibt es leider nicht 'fertig' im Rahmen der BCL, es gibt aber eine sehr schöne freie Implementierung.

Diese ist wirklich einfach zu nutzen, und zwar wie folgt:

StopWatch sw = new StopWatch();

// hier laeuft der Code

Debug.WriteLine( "Zeit: " + (sw.Peek() / (float)10).ToString() + " msecs");

Einfacher gehts wirklich nicht. Den Quellcode und ein passendes Beispielprogramm gibt es bei Mentalis.org.