Der dotTrace 2 Profiler von JetBrains


Thomas Wölfer
Thomas Wölfer

28. Februar 2007


Seit Jahren suche ich einen Profiler, mit dem es tatsächliche möglich ist, unsere Anwendungen zu untersuchen. Das Problem: Bei allen die ich mir in den letzten Jahren angesehen habe, gab es Ärger. Entweder, das Programm wurde im Profiler derartig langsam, das man schlicht nicht mehr damit arbeiten konnte. Andere Profiler stürzten schon beim laden des Programms ab, oder versagten sonst wie Ihren Dienst. Mit einem Wort: Unsere Anwendungen waren einfach zu groß, als das man sie vernünftig mit einem Profiler unter die Lupe nehmen konnte.

 

Ende letzten Jahres bin ich zufällig über den dotTrace Profiler von JetBrains gestolpert – und war begeistert. Nun arbeite ich seit einigen Wochen regelmäßig damit, und an meiner ursprünglichen Meinung hat sich nichts geändert. Wer einen guten Profiler für .NET Anwendungen sucht, der ist mit dotTrace gut bedient.

 

Der Profiler kommt mit dem .NET Framework 1.1 und 2.0 klar und kann sowohl fürs profilen der Performance, als auch fürs profilen der Speicherverwendung benutzt werden. Das Programm läuft mit normalen Windows Clients, mit ASP.NET Anwendungen und mit Windows Services. (Ich habe bisher nur den Performance und Speicherteil für Windows Clients benutzt.)

 

Das Programm ist extrem einfach zu bedienen: Ich bin damit sofort klargekommen, ohne auch nur eine Zeile Dokumentation zu lesen. Das Performance-Profiling kann man zu einem beliebigen Zeitpunkt starten und beenden: Man lädt also das zu untersuchende Programm in den Profiler, und startet zu einem beliebigen Zeitpunkt die Traces. Zu einem späteren Zeitpunkt hält man die Traces wieder an, und erhält dann einen Snapshot. Dabei kann man pro Programmlauf auch mehrere Snapshots machen, und das Tracing auf Wunsch auch schon beim Programmstart einschalten. Letzteres ist praktisch, wenn man Performance-Probleme beim laden der Anwendung hat.

 

Als Ergebnis bekommt man in einem Snapshot einen Baum, in dem die Zeiten und prozentualen Anteile pro aufgerufener Funktion enthalten sind – und zwar getrennt nach Threads. Zusätzliche gibt es diverse Möglichen die Anzeige zu verbessern – so kann man zum Beispiel Funktionen aus bestimmten Namespaces ausfiltern.

 

Alles in allem ist der dotTrace Profiler für mich ein wirklich gelungenes Werkzeug: Ich kann jedermann nur empfehlen, die eigene Anwendung zumindest einmal durch die Testversion von dotTrace 2 zu jagen.