2008-11-14 2 views
51

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

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

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


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

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

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


Addenum 2: Я загрузил ознакомительные версии AQTime и ProDelphi.

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

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

мне большие различия кажутся:

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

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

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

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

Оценка 4-4. Как вы думаете?


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


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

+0

Извините, у меня есть опыт только с AQTime. – 2008-11-14 22:29:14

+0

Считаете ли вы, что это стоит того? – lkessler 2008-11-14 22:33:07

+2

Вы должны попробовать ограниченную по времени демонстрацию AQTime. У меня было много проблем с ним на моем ноутбуке, который установлен на 120 DPI - некоторые диалоги были фактически непригодны, потому что кнопки были обрезаны. Это не внушало большой уверенности, и поддержка заявила, что они ничего не могут с этим поделать ... :-( – mghie 2008-11-14 22:47:22

ответ

34

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

ReportMemoryLeaksOnShutDown := True; 

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

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

Что касается gpProfile, вы можете попробовать и установить ошибку gabr на SO для обновления ... или go и update gpProfile yourself as it is open source. ;-)

1

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

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

+1

Я обещаю, что буду работать над новым выпуском я тоже скучаю по GpProfile (и, к счастью, похоже, что мне это нужно скоро) – gabr 2008-11-15 08:57:16

2

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

7

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

2

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

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

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

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

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

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

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

2

Кто-нибудь пытался the Profiler component at Delphi Area? Это бесплатное программное обеспечение с источником, и это рецензия говорит:

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

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

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

29

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

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

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

3

Мы используем AQTime Pro и довольны этим. Smartbear недавно выпустили совершенно бесплатно AQTime standard edition. Большинство функций по-прежнему есть, но они, конечно, removed a bit

0

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

1

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

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

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

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

Смежные вопросы