Подтвердить что ты не робот

Инструменты анализа профилей и памяти для Delphi

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

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

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


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

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

Мне любопытно, что ProDelphi by Michael Adolph, что составляет менее одной шестой стоимости AQTime. Вы используете его? Стоит ли AQTime платить в шесть раз больше?


Addenum 2: я загрузил пробные версии AQTime и ProDelphi.

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

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

Мне видны большие различия:

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

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

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

  • ProDelphi имеет бесплатную версию, которая будет профилировать 20 подпрограмм, а ее про версия стоит менее 100 долларов США. AQTime составляет 600 долларов США. Plus 4 для ProDelphi.

Теперь счет 4-4. Как вы думаете?


Addenum 3: Primoz Gabrijelcic планирует снова запустить GpProfile. См. Его комментарии к некоторым из приведенных ниже ответов. Он на StackOverflow как Gabr.


Addenum 4: Кажется, что в конце концов может быть решение для профилировщика. См. asmprofiler с открытым исходным кодом Andre, описанный ниже.

4b9b3361

Ответ 1

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

ReportMemoryLeaksOnShutDown := True;

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

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

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

Ответ 2

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

Это не идеальный, но свободный и открытый исходный код: -).

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 7

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

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

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

Ответ 8

Кто-нибудь пробовал компонент Profiler в Delphi Area? Это бесплатное программное обеспечение с исходным кодом, и оно пишет:

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

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

Количество раз, когда таймер активировано (количество попаданий) Общее количество время выполнения Среднее выполнение время на каждый хит Время выполнения на первый хит Время выполнения на последний хит хит с минимальным время выполнения время выполнения

Ответ 9

Это правда, для профилирования я пропустил GpProfile Primoz и не нашел хорошей замены. Я когда-то пробовал AQTime, но был не слишком доволен этим ценой.

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

Ответ 10

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

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

Ответ 11

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

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

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

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

Ответ 12

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