Das kürzlich veröffentlichte Visual Studio 2010 Service Pack 1 erweiterte den Visual Studio Performance Wizard um die Unterstützung von Silverlight Anwendungen. Womit nun ein professionales Profiling von Silverlight Anwendung durchgeführt werden kann. Leider ist allerdings der Performance Wizard nur in den Visual Studio Versionen Premium und Ultimate verfügbar.
Profiling Beispiel
Als Beispiel wird ein neues Silverlight-Projekt mit dem Namen „SilverlightPerformanceWizard“ angelegt. In die Mitte der Oberfläche (MainPage.xaml) wird ein Button mit dem Text „Process start“ gesetzt.

Abbildung 1 – Oberfläche der Silverlight-Beispielanwendung.
Anschließend wird mittels Doppelklick auf den Button das Click-Event Abonniert, worin der Source-Code aus Listing 1 folgt.
1: private void Button_Click(object sender, RoutedEventArgs e)
2: {
3: const string text = "test";
4:
5: for (int i = 0; i < 10000000; i++)
6: {
7: string value = text.Replace('t', 'b');
8: }
9: }
Listing 1 – Source-Code zur Performance-Messung.
Nun ist die Beispielanwendung einsatzbereit. Der Performance Wizard wird unter dem Menüpunkt „Analyze“ – „Launch Performance Wizard…“ gestartet.

Abbildung 2 – Performance Wizard starten.
Der Wizard bietet nun unterschiedliche Profiling Möglichkeiten an. Dabei kann die CPU, Speicher, Threads und vieles weitere analysiert werden. Bei diesem Beispiel wird normal der CPU verbrauch analysiert, wobei der erste Punkt ausgewählt bleibt.

Abbildung 3 – Auswahl eines Profiling-Profils beim Performance Wizard.
Beim nächsten Schritt muss die Silverlight-Anwendung ausgewählt werden. Das wäre bei diesem Beispiel der erste Punkt mit „SilverlightPerformanceWizard“. Der zweite Punkt wäre nur das Web-Projekt das die eigentliche Silverlight-Anwendung hostet.

Abbildung 4 – Silverlight-Anwendung auswählen.
Der letzte Schritt bietet lediglich das sofortige ausführen des Profiling an. Das bei diesem Beispiel auch geschehen soll.

Abbildung 5 – Das Profiling soll anschließend gestartet werden.
Jetzt öffnet sich die Silverlight-Anwendung wobei einmal auf den Button geklickt wird. Zum Test kann gerne nach 1-2 Sekunden Pause wiederholt auf den Button geklickt werden. Nun wird die Silverlight-Anwendung durch schließen des Browsers wieder beendet. Das Profiling von Visual Studio analysiert nun die aufgezeichneten Daten und stellt sofort Visualisiert den gesamten Prozessablauf dar.

Abbildung 6 – Der Profiling Report von Visual Studio.
In der Mitte des Reports bei „Hot Path“ wird sofort ersichtlich das von der gesamt Laufzeit die Methode System.String.Replace(char, char) bis zu 88% CPU last verbrauchte. Die Visualisierte Darstellung zu Beginn des Reports kann auch nochmal auseinandergenommen werden um weitere Details aufzuspüren.
Zum Beispiel ist ersichtlich dass die Kurve bei 3 – 5 Sekunden und bei 7 – 9 Sekunden aufschlägt. Hier kann jetzt mittels Klick auf 3 bis 5 der Bereich markeiert werden. Anschließend klickt man rechts daneben auf „Filter by selection“.

Abbildung 7 – Speziellen Bereich analysieren.
Nach dem aktualisieren des Reports, wird sofort bei „Functions Doing Most Individual Work“ ersichtlich das in diesem Bereich 91,44 % die CPU von der Methode System.String.Replace(char, char) beansprucht hat. Somit wird klar, dass genau an dieser Stelle der Kurve der Button geklickt wurde.

Abbildung 8 – Der Report im Detail.
Fazit
Das Profiling ist sehr angenehm und hat sich bei einigen Tests positiv ausgewirkt. Sehr angenehm ist auch der Performance Explorer (Menü: „View“ – „Other Windows“ – „Performance Explorer“), womit jederzeit bereits erstellte Profiling-Wizard-Einstellungen direkt ausgeführt werden können und bisherige Profiling Reports hinterlegt sind. Sollten Features vermisst werden und ein noch umfangreiches Profiling ermöglicht werden, kann ich auch den kostenpflichtigen ANTS Profiler von Redgate empfehlen.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
