Na tropie wąskich gardeł

TrueTime firmy NuMega służy do precyzyjnego analizowania wydajności aplikacji. Umożliwia dokładne sprawdzenie, które fragmenty kodu powodują największe spowolnienia.

TrueTime firmy NuMega służy do precyzyjnego analizowania wydajności aplikacji. Umożliwia dokładne sprawdzenie, które fragmenty kodu powodują największe spowolnienia.

TrueTime współpracuję z aplikacjami tworzonymi w Visual C++, Visual Basic i Javie. Pozwala na analizę dowolnych plików wykonywalnych, w tym także obiektów COM czy komponentów działających w środowisku Microsoft Transaction Server.

Dowolny fragment kodu

Niemal do każdego kompilatora dodany jest profiler - narzędzie pozwalające analizować szybkość wykonywanego kodu. Są to jednak zwykle narzędzia, umożliwiające dokładne sprawdzenie działania kodu stworzonego przez dany kompilator. Nie ma możliwości, by prześledzić działanie fragmentów napisanych w innym języku czy dokładnie przeanalizować czas "spędzany" w bib-liotekach systemowych. Ponadto w systemach wielozadaniowych trudno jest wyznaczyć dokładnie czas, w jakim procesor wykonuje konkretny program. Standardowe narzędzia do profilowania zwykle wymagają, by w trakcie analizy na komputerze nie były uruchomione inne aplikacje.

TrueTime natomiast mierzy czas w wątkach tworzonych przez badaną aplikację, inne pomija. Dzięki temu, ustawiając odpowiednie opcje, łatwo można wyeliminować z pomiaru np. czas w oczekiwaniu na reakcję użytkownika. Niestety, te cechy spowodowały, że program analizowany przy użyciu TrueTime działa znacznie wolniej.

TrueTime pozwala na bardzo dokładną analizę wykonywanego kodu. Można obserwować czas wykonywania poszczególnych instrukcji w danym języku programowania, zależność między czasem wykonywania poszczególnych funkcji a częstotliwością ich wywoływania. W odróżnieniu od standardowych profilerów, które często w przypadku rekurencji podają nieprawidłowe odczyty, TrueTime ma bardzo ciekawy algorytm, pozwalający poprawnie gromadzić informacje o zagnieżdżonych, powtarzających się wywołaniach. Można także zażądać, by zostały odszukane fragmenty kodu działające najwolniej.

Dobry na początek

Aby program mógł być poddany analizie, należy w specjalny sposób skompilować go do pliku wykonywalnego (najlepiej z informacją dla debuggera i specjalnymi dodatkami do TrueTime). Po uruchomieniu takiego pliku, można go używać normalnie, wykonując wybrane operacje. Przed zamknięciem programu użytkownik zostanie poproszony o zapisanie sesji - informacji do dalszej analizy w środowisku TrueTime. Niestety, nie jest możliwe przeniesienie samego pliku wykonywalnego na inny komputer, gdzie mógłby być analizowany. Aby taki plik działał, konieczna jest pełna instalacja pakietu TrueTime. Do Visual Basic i Visual C++ dostępne są spec-jalne dodatki, które ułatwiają ustawianie opcji kompilacji.

Interfejs służący do analizowania czasu wykonania ma interesującą właś-ciwość - pokazywany jest sumaryczny czas poświęcony na daną funkcję wraz ze wszystkimi kolejnymi odwołaniami. Użytkownik, klikając na poszczególne funkcje, może zagłębiać się w kolejne poziomy drzewa wykonania, co pozwala wykryć, która konstrukcja językowa jest w rzeczywistości odpowiedzialna za spowolnienie. Co ciekawsze, analiza może być wykonywana bez dostępu do kodu źródłowego. Dzięki temu można np. sprawdzać, jak działają funkcje systemowe. Równocześnie programista może oszacować, czy opłacalne jest przyspieszenie danego fragmentu kodu - ma dostęp do informacji, skąd on jest wywoływany i jak często się to dzieje. Jednak wyraźnie brakuje opcji, które pozwoliłyby obliczyć, jak przyspieszenie danej funkcji wpłynie na ogólny czas wykonania.

Pakiet TrueTime warto stosować już na początku tworzenia aplikacji. Pozwala on bowiem szybko odkryć najwolniejsze miejsca w kodzie, a co ważniejsze - daje wyobrażenie o tym, które fragmenty kodu są często wykonywane. Pozwala tak ukierunkować dalszą pracę, by wysiłki zespołu były jak najbardziej efektywne.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200