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



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



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



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





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 процедур, и его pro версия стоит менее $100 USD. AQTime составляет $ 600 USD. Плюс 4 для ProDelphi.



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





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





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

929   12  

12 ответов:

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

ReportMemoryLeaksOnShutDown := True;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.