Narzędzia do analizy profili i pamięci dla Delphi [zamknięte]

Niedawno uaktualniłem z Delphi 4 do Delphi 2009. W Delphi 4 używałem GpProfile Primoz Gabrijelcic jako profilera i Memory Sleuth by Turbo Power do analizy pamięci i debugowania wycieków. Obie dobrze mi pracowały. Ale teraz potrzebuję nowych narzędzi, które będą działać z Delphi 2009.

Liderem w narzędziach do profilowania/analizy dla Delphi jest oczywiście AQtime by AutomatedQA. Ostatnio zjadły nawet Memproof Atanasa Soyanov , który, jak zrozumiałem, był doskonałym i darmowym narzędziem do analizy pamięci, i włączył swoją funkcjonalność do AQTime. Ale AQTime jest bardzo drogi dla indywidualnego programisty. Faktycznie kosztuje więcej niż koszt aktualizacji do Delphi 2009!

Więc moje pytanie brzmi: czy są inne tańsze opcje do profilowania i analizy pamięci w obecnych wersjach Delphi, z których jesteś zadowolony i polecam, czy powinienem ugryźć kulkę i zapłacić duże pieniądze za AQTime?


Addenum: wygląda na to, że początkujący użytkownicy wskazują, że menedżer FastMM już zawarty w Delphi jest bardzo dobry do znajdowania wycieków pamięci.

Czy są jakieś dobre alternatywy dla profilowania kodu źródłowego?

Jeden jestem ciekawy ProDelphi Michael Adolph który jest mniej niż jedna szósta koszt AQTime. Używasz go? Czy AQTime warto zapłacić sześć razy więcej?


Addenum 2: pobrałem wersje próbne obu AQTime i ProDelphi.

AQTime był trochę przytłaczający i trochę mylący na początku. Zajęło to kilka godzin, aby znaleźć niektóre z trików potrzebnych do podłączenia go.

ProDelphi był bardzo podobny do GpProfile, do którego byłem przyzwyczajony. Ale jego okna są zaśmiecone i mylące i nie jest tak miły jak GpProfile.

Dla mnie duże różnice wydają się być:

  1. ProDelphi zmienia Twój kod. AQTime nie. Zmiana kodu może uszkodzić dane, jeśli coś pójdzie nie tak źle, ale moje doświadczenie z GpProfile było takie, że nigdy mi się to nie przytrafiło. Plus jeden za AQTime.

  2. ProDelphi wymaga wyłączenia optymalizacji. Ale to, co chcesz profilować, to twój program z optymalizacją, sposób, w jaki zostanie uruchomiony. Plus jeden za AQTime.

  3. ProDelphi może profilować tylko do funkcji lub procedury. AQTime może przejść do poszczególnych linii. Plus 2 za AQTime.

  4. ProDelphi ma darmową wersję, która będzie profilować 20 procedury, a jego wersja pro kosztuje mniej niż $100 USD. AQTime to $ 600 USD. Plus 4 za ProDelphi.

Wynik jest teraz 4-4. Co o tym myślisz?


Addenum 3: Primoz Gabrijelcic planuje ponownie uruchomić GpProfile. Zobacz jego komentarze do niektórych z poniższych odpowiedzi. On na StackOverflow jako Gabr .


Addenum 4: wygląda na to, że jednak może istnieć rozwiązanie profilera. Zobacz Andre ' s open source asmprofiler, opisany poniżej .

Author: lkessler, 2008-11-15

12 answers

Za tę cenę nie możesz pokonać FastMM4 jako trackera pamięci. Jest prosty w obsłudze, ale wydajny i dobrze zintegrowany z Delphi.
Myślę, że wiesz, że bez pobierania, instalowania lub zmieniania czegokolwiek innego, wystarczy umieścić tę linię

ReportMemoryLeaksOnShutDown := True;

Gdziekolwiek w Twoim kodzie, umożliwi podstawowe raportowanie wycieków pamięci.
Jeśli potrzebujesz więcej informacji o awarii, EurekaLog jest bardzo dobrym produktem, z którego korzystamy. MadExcept ma również dobrą reputację...

Do profilowania w szczególności mamy czas AQTime.

Jeśli chodzi o gpProfile, możesz spróbować wprowadzić błąd gabr NA SO dla aktualizacji... lub idź i zaktualizuj gpProfile samodzielnie, ponieważ jest to open source. ;-)

 35
Author: François,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:17

Zrobiłem profiler open source dla Delphi: http://code.google.com/p/asmprofiler/

Nie jest idealny, ale jest darmowy i open source :-).

Głównym powodem, dla którego to zrobiłem, było to, że przegapiłem dokładne drzewo połączeń. Na przykład ProDelphi przechowuje tylko podsumowanie i całkowitą liczbę wszystkich połączeń, nie widać, co wywołało określoną procedurę w określonym czasie (lub czasie czas trwania). I ma Wykres czasu, dzięki czemu można zobaczyć, jak czas trwania połączenia zmieniał się w czasie.

 30
Author: 2 revs, 2 users 96%André,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-11 05:55:36

Spójrz również na Eric Grange ' s Sampling Profiler

 24
Author: Mohammed Nasman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-01 20:35:16

Byłem bardzo zadowolony z AQtime do profilowania.

 7
Author: Nick Bradbury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-15 02:04:12

Po użyciu zarówno GpProfile, jak i AQTime odkryłem, że oba są skuteczne w znalezieniu, jaka metoda wywołania powoduje szyjkę butelki.

Jednak AQTime może mi również powiedzieć, która linia kodu powoduje to, bez wprowadzania żadnych zmian w kodzie źródłowym (chociaż działa najlepiej z debugowaniem TD32 i debugowaniem DCU).

Ostatnio użyłem go, aby przyspieszyć rutynę o około 30x (z powodu złego użycia funkcji wewnętrznej biblioteki)

Jednak nie musiałem sam za to płacić!

 4
Author: Gerry Coll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-17 02:43:14

Używamy AQtime Pro i jesteśmy z niego zadowoleni. Smartbear niedawno wydał całkowicie darmowy AQtime standard edition . Większość funkcji nadal istnieje, ale mają oczywiście usunięte trochę

 3
Author: Roland Bengtsson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 06:53:11

Zgadzam się z tobą co do interfejsu ProDelphi, ale robi to na tyle dobrze, że chętnie z nim pozostajemy. Musimy tylko od czasu do czasu profilować, gdy mamy znaczący problem z wydajnością, a to zawsze pomogło nam znaleźć problem dość szybko. Bardzo dobry stosunek jakości do ceny, a Michael wydaje się całkiem dobry, jeśli chodzi o aktualizowanie go o nowe wersje.

Sugerowałbym jedno, ponieważ wymaga to Wstawienia kodu, mając cały odpowiedni kod w niektórych rodzaj VCS jest nieoceniony. Kiedy musimy profilować, możemy:

  • sprawdź wszystkie istotne pliki w
  • Sprawdź je wszystkie
  • Wykonaj potrzebne nam profilowanie, a nastÄ™pnie
  • Anuluj wszystkie kasy, skutecznie wracajÄ…c do miejsca, w którym byliÅ›my.
 2
Author: RichardS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 10:42:11

Czy ktoś próbował komponentu Profiler w obszarze Delphi? jest to freeware ze źródłem i writeup mówi:

Jeśli szukasz łatwego i dokładny sposób pomiaru czasu realizacji Twojego kodu za darmo, TProfiler jest to, czego potrzebujesz. TProfiler jest komponent niewizualny i debugujący który umożliwia tworzenie nazwanych timery w Twoim kodzie.

Każdy timer Tprofilera dostarcza następujące informacje:

Liczba razy że zegar był aktywowana (liczba trafień) całkowita czas realizacji średnia realizacja czas na każdym trafieniu czas wykonania na pierwszy czas wykonania uderzenia na ostatni hit hit z minimum czas wykonania trafienia z maksymalnym czas wykonania

 2
Author: lkessler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 01:27:11

To prawda, za profilowanie Tęsknię za GpProfile Primoza i nie znalazłem dobrego zamiennika. Kiedyś próbowałem AQTime, ale nie byłem zbyt zadowolony z tego za tę cenę.

Do śledzenia wycieków pamięci i podejrzanych dostępu do pamięci jednak nie mogłem być szczęśliwszy niż jestem z FastMM4.

 1
Author: mghie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-14 22:34:44

Używam ProDelphi przez długi czas i znaleźć to spełnia moje potrzeby.

Udało mi się osiągnąć oszałamiające wyniki w ulepszaniu wydajności systemu za pomocą dostarczanych danych.

Dla małych projektów darmowa wersja jest w porządku.

W przypadku większych projektów potrzebna będzie wersja (płatna) pro.

 1
Author: Peter Ingham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-13 00:23:19

Dla profilera możesz wypróbować SmartInspect z oprogramowania Gurock. Nigdy nie używałem GpProfile, ale szybkie spojrzenie na jego zestaw funkcji przypomniało mi SmartInspect. Co ciekawe, nie twierdzi, że jest profilerem, ale wydaje się, że jest taki sam jak GpProfile(chyba, że czegoś mi brakuje). Obsługuje Delphi 2009 i ma bezpłatny okres próbny i jest nieco tańszy niż AQTime.

Uwaga : SmartInspect jest rejestratorem, a nie profilerem.

 1
Author: Jim McKeeth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 09:20:56

Menedżer pamięci FastMM4 wymieniony w tej starszej odpowiedzi ("Jak monitorować lub wizualizować fragmentację pamięci aplikacji delphi") przechowuje listę wszystkich przydziałów, które mogą być zapytane w czasie działania (i wyświetlane w siatce przy użyciu dołączonej aplikacji demonstracyjnej). Nie pokazuje dokładnie, który obiekt wycieka, ponieważ Statystyki są na rozmiar bloku. Ale może być przydatny do długotrwałego monitorowania aplikacji w produkcji, na przykład serwerów lub usług. Obecnie jestem integracja go z (komercyjnym) serwerem aplikacji webowej jako dodatek 'VisualMM'.

 0
Author: mjn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:58