~~SLIDESHOW~~ ====== Profilowanie kodu w VS2013 ====== ===== Metody profilowania ===== * **Sampling** zbiera dane statystyczne dotyczące wykonywanej aplikacji próbkując obciążenie CPU * **Instrumentation** - pomiary wywołania poszczególnych funkcji * **Concurrency** informacje aplikacji wielowątkowych * **.NET memory** użycie pamięci i //garbage collection// * **Tier interaction** zawołania ADO.NET do baz danych SQL Serwera ===== Performance Session ===== * **Performance Session** - konfiguracja analizy + raporty * Okno **Perforamnce Explorer**: konfiguracja sesji, uruchamianie testów, porównywanie raportów * **Targets** - cel analizy: projekt, działający proces, plik wykonywalny * **Reports** - pliki zawierające informacje zebrane podczas analizy {{ :zajecia:znd_2014_1:profiler_explorer.png?300 |}} ===== Wymagania ===== * uprawnienia administracyjne - wymagane przez metody próbkowania (sampling) oraz mające dostęp do wywołań systemowych * skompilowanie aplikacji do wersji **Release** * Windows symbols files - definicja nazw funkcji systemowych ===== Raport ===== * **Hot Path** najaktywniejsza ścieżka drzewa wywołań funkcji * Lista funkcji wykonujących najwięcej pracy {{ :zajecia:znd_2014_1:profiler_summary.png?600 |}} * ''Inclusive'' - łącznie dla całej funkcji, ''Exclusive'' - po odjęciu funkcji wołanych z wnętrza analizowanej funkcji ===== Szczegóły analizy funkcji ===== {{ :zajecia:znd_2014_1:profiler_function_details.png?500 |}} ===== Error List ===== * Okno ''Error List'' zawiera ostrzeżenia i wskazówki dotyczące efektywności aplikacji * [[http://msdn.microsoft.com/en-us/library/ee843874.aspx|Performance Rules]]: błędy, ostrzeżenia, informacje {{ :zajecia:znd_2014_1:profiler_errors.png?600 |}} ===== Filtrowanie wyników ===== {{ http://i.msdn.microsoft.com/dynimg/IC359349.png }}\\ Żródło: http://msdn.microsoft.com ===== Porównywanie raportów ===== {{ :zajecia:znd_2014_1:profiler_cmp.png?600 |}} ===== Ćwiczenia ===== - Zaloguj się do serwera TFS. Z kolekcji ''test'' wybierz projekt zespołowy ''projekt2'' w którym znajduje się katalog ''Slownik'' zawierający rozwiązanie przykładowego programu. Zmapuj położenie tego katalogu z lokalnym katalogiem, pobierz pliki projektu i utwórz kod do edycji w Visual Studio. - Przetestuj działanie aplikacji na przykładowych plikach wejściowych. Program tworzy słownik (unikatową, posortowaną listę słów) na podstawie dowolnego pliku tekstowego. Wygeneruj słownik i wyeksportuj jego zawartość do pliku tekstowego. - Uruchom profilowanie aplikacji w trybie ''Instrumentation'' (ten tryb nie wymaga uprawnień administratora) **Analize -> Performance and Diagnostics** - Przeanalizuj wyniki w celu wykrycia funkcji, których wykonanie zajmuje najwięcej czasu i spróbuj przyśpieszyć ich działanie. - Wyselekcjonuj tylko wybrany fragment przebiegu profilowania (''Filter by Selection'') i znajdź najdłużej wykonywaną funkcję (''Hot Path'') - Po wykonaniu poprawek uruchom proces profilowania ponownie. - Porównaj wyniki uzyskane w kolejnych procesach profilowania - Utwórz nową sesję analizy wydajności i skonfiguruj ją w taki sposób aby raport uwzględniał analizę pamięci - Wybierz **Analize -> Profiler -> New Performance Sesion** - W oknie ''Performance Explorer'' zaznaczając nową sesję prawym klawiszem myszy wybierz ''Preferences'' i ustaw tryb ''Instrumentation'' wraz z ''Collect .NET object allocation information'' - W pozycji ''Targets'' wybierz (prawy klawisz myszy) aktualny projekt jako cel analizy - Uruchom analizę i zlokalizuj funkcję rezerwującą najwięcej pamięci ===== Więcej informacji ===== * [[http://msdn.microsoft.com/en-us/library/ms182372.aspx|Beginners Guide to Performance Profiling]] * [[http://msdn.microsoft.com/en-us/library/z9z62c29.aspx|Analyzing Application Performance by Using Profiling Tools]] * [[http://msdn.microsoft.com/en-us/magazine/cc337887.aspx|Find Application Bottlenecks with Visual Studio Profiler]] by Hari Pulapaka and Boris Vidolov