Профилировщик и инструменты анализа памяти для Delphi [закрыто]

недавно я обновил Delphi 4 до Delphi 2009. С Delphi 4 я использовал GpProfile by Primoz Gabrijelcic как профилировщик и память сыщика Turbo Power для анализа утечек памяти и отладки. И то и другое хорошо работало на меня. Но теперь мне нужны новые инструменты, которые будут работать с Delphi 2009.

лидером в инструментах профилирования / анализа для Delphi с большим отрывом является, очевидно,AQTime с помощью AutomatedQA. Они недавно даже сожрали Memproof по Атанас Soyanov, который, как я понял, был отличным и свободным инструментом анализа памяти, и включил его функциональность в AQTime. Но AQTime очень дорог для отдельного программиста. Это на самом деле стоит больше, чем обновление до Delphi 2009 стоимость!

Итак, мой вопрос: есть ли другие менее дорогие варианты профилирования и анализа памяти в текущих версиях Delphi, которые вы довольны и рекомендуете, или я должен укусить пулю и заплатить большие деньги за AQTime?


Адденум: похоже рано ответами о том, что менеджер FastMM уже включены в Delphi очень хорош для поиска утечек памяти.

итак, есть ли хорошие альтернативы для профилирования исходного кода?

одно мне непонятно ProDelphi Майкла Адольфа что составляет менее одной шестой стоимости AQTime. Ты им пользуешься? Стоит ли aqtime платить в шесть раз больше много?


Адденум 2: я скачал пробные версии обоих AQTime и ProDelphi.

AQTime был немного подавляющим, и немного запутанным на первый. Потребовалось несколько часов, чтобы найти некоторые из трюков, необходимых для его подключения.

ProDelphi был очень похож на GpProfile, к которому я привык. Но его окна загромождены и запутаны, и это не так хорошо, как GpProfile.

Мне кажется, что большие различия быть:

  1. ProDelphi изменяет ваш код. AQTime не. Изменение кода может повредить ваши данные, если что-то пойдет не так, но мой опыт с GpProfile, что это никогда не случалось со мной. Плюс один для AQTime.

  2. ProDelphi требует отключить оптимизацию. Но то, что вы хотите профилировать, - это ваша программа с оптимизацией, способ ее запуска. Плюс один для AQTime.

  3. ProDelphi только профиля функция или процедура. AQTime может перейти к отдельным линиям. Плюс 2 для AQTime.

  4. ProDelphi имеет бесплатную версию, которая будет профиль 20 подпрограмм, и его pro версия стоит менее $100 USD. AQTime составляет $ 600 USD. Плюс 4 для ProDelphi.

счет 4-4. А ты как думаешь?


Адденум 3: Примоз Gabrijelcic планирует снова GpProfile работы. См. его комментарии по некоторым ответам ниже. Он на StackOverflow как Габр.


Адденум 4: похоже, решение есть профайлер в конце концов. См.Андре с открытым исходным кодом asmprofiler, описано ниже.

12 ответов


по цене вы не можете победить FastMM4 в качестве трекера памяти. Он прост в использовании, но мощный и хорошо интегрирован с Delphi.
Я думаю, что вы знаете, что без загрузки, установки или изменения чего-либо еще, просто поставив эту строку

ReportMemoryLeaksOnShutDown := True;

в любом месте вашего кода, позволит основные отчеты об утечках памяти.
Если вам нужно больше информации о сбоях, EurekaLog-очень хороший продукт, который мы используем. MadExcept также имеет хорошую репутацию...

для профилирования конкретно у нас есть AQTime.

Что касается gpProfile, вы можете попробовать и ошибка Габр on SO для обновления... или иди и обновить gpProfile самостоятельно, как это с открытым исходным кодом. ;-)


Я сделал профилировщик с открытым исходным кодом для Delphi: http://code.google.com/p/asmprofiler/

Она не идеальна, но это бесплатно и с открытым исходным кодом :-).

основная причина, по которой я сделал это, потому что я пропустил точное дерево вызовов. Например, ProDelphi хранит только сводку и общее количество всех вызовов, вы не можете видеть, что вызывает определенную процедуру в определенное время (или время продолжительность.) И в нем есть график, так что вы можете увидеть, как продолжительность вызова меняться со временем.



Я был очень доволен aqtime для профилирования.


используя как GpProfile, так и AQTime, я обнаружил, что оба они эффективны при поиске того, какой вызов метода вызывает горлышко бутылки.

однако AQTime также может сказать мне, какая строка кода вызывает это, не внося никаких изменений в мой исходный код (хотя он лучше всего работает с отладкой TD32 и отладкой dcus).

недавно я использовал его для ускорения процедуры примерно на 30x (из-за плохого использования внутренней библиотечной функции)

однако мне не пришлось платить за это себя!


мы используем Aqtime Pro и довольны этим. Smartbear недавно выпустили совершенно бесплатно aqtime standard edition. Большинство функций все еще есть, но они, конечно,удалены немного


Я согласен с вами по поводу интерфейса ProDelphi, но он делает достаточно хорошую работу, что мы рады остаться с ним. Нам нужно только профилировать очень иногда, когда у нас есть значительная проблема с производительностью, и это всегда помогало нам найти проблему довольно быстро. Очень хорошее соотношение цены и качества, и Майкл, кажется, довольно хорошо о его обновлении для новых версий.

одна вещь, которую я бы предложил, это то, что, поскольку он требует, чтобы код был вставлен, имея весь соответствующий код в некотором роде VCS бесценен. Когда нам нужно профилировать, мы:

  • проверьте все соответствующие файлы в
  • проверьте их все
  • выполнить профилирование нужно, а потом
  • отменить все проверки, эффективно катится туда, где мы были.

кто-нибудь пробовал компонент профилировщика в области Delphi? Это бесплатное ПО с исходным кодом, и это writeup говорит:

Если вы ищете простой и точный способ измерения времени выполнения вашего кода бесплатно, TProfiler Что вам нужно. TProfiler-это невизуальный и отладочный компонент это позволяет создавать именованные таймеры в вашем коде.

каждый таймер TProfiler обеспечивает следующая информация:

количество раз, когда таймер был активировано (количество попаданий) итого время исполнения в среднем исполнении время на каждый удар время выполнения на первое время исполнения хита на последний хит хит с минимумом время исполнения хита с максимумом время исполнения


Это правда, для профилирования я скучаю по Gpprofile Primoz и не нашел хорошей замены. Однажды я попробовал AQTime, но не был слишком доволен им за цену.

для отслеживания утечек памяти и изворотливых обращений к памяти, однако я не мог быть счастливее, чем я с FastMM4.


Я использую ProDelphi в течение длительного времени, и он отвечает моим потребностям.

Я смог достичь потрясающих результатов в улучшении производительности системы, используя данные, которые он предоставляет.

для небольших проектов бесплатная версия в порядке.

для больших проектов вам понадобится (платная) версия pro.


для профилировщика вы можете попробовать SmartInspect из программного обеспечения Gurock. Я никогда не использовал GpProfile, но быстрый взгляд на его набор функций напомнил мне SmartInspect. Интересно, что он не претендует на то, чтобы быть профилировщиком, но, похоже, он такой же, как GpProfile (если я чего-то не упускаю). Он поддерживает Delphi 2009 и имеет бесплатную пробную версию и немного дешевле, чем AQTime.

Примечание: SmartInspect-это регистратор, а не профайлер.


менеджер памяти FastMM4 упомянул в ответ ("как контролировать или визуализировать фрагментацию памяти приложения delphi") сохраняет список всех распределений, которые могут быть запрошены во время выполнения (и отображаются в сетке с помощью включенного демонстрационного приложения). Он точно не показывает, какие утечки объекта, так как статистика на размер блока. Но это может быть полезно для длительного мониторинга приложений в производстве, например серверов или служб. В настоящее время я интегрирую его в (коммерческий) сервер веб-приложений в качестве дополнения "VisualMM".