2008-11-26 4 views
12

Я тестировал the performance and memory profiler AQTime, чтобы посмотреть, стоит ли тратить эти большие $$$ на это для моего приложения Delphi.Как работает AQTime?

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

Способ, которым они делают это настолько эффективно, заставляет меня думать, что могут быть некоторые методы/технологии, используемые здесь, о которых я не знаю, о которых было бы полезно узнать.

Знаете ли вы, какие методы они используют для захвата выполнения строки за строкой без изменений кода?

Существуют ли другие инструменты для профилирования, которые также выполняют неинвазивные линейные проверки, и если да, используют ли они те же методы?

+0

AQTime FABULOUS. Я люблю это. ПОЛНОСТЬЮ рекомендую. – 2011-05-23 03:10:58

ответ

7

Это просто предположение, но, возможно, AQtime основан на технологии, похожей на Microsoft Detours?

Detours библиотека для инструментирование произвольных функций Win32 на x86, x64, и машин IA64. Detours перехватывает Функции Win32, перезаписывая код памяти для целевых функций.

+0

Должно быть! Запрет кому-то знать что-то другое, я даю вам ответ. – lkessler 2008-12-03 15:02:52

+4

Некоторые люди называют это «зацеплением». MadCodeHook - это инструмент для Delphi, который позволит вам вводить код. Интересно отметить, что одним из ограничений, связанных с подключением кода, является то, что вы не можете перехватывать слишком короткие функции, чтобы позволить встроенную модификацию. AQTime сообщает о функциях, которые слишком малы, чтобы разрешить перехваты, и все, что вы можете сделать, это игнорировать их.Это заставляет меня думать, что наверняка, зацепление (инструмент, перехват) - это то, что делает AQTime. – 2011-05-23 03:10:30

2

Я не знаю, в частности, о Delphi, но отладчик приложений C может делать линейное профилирование относительно легко - он может загружать код и связывать каждый путь кода блоком кода. Затем он может сломать все инструкции условного перехода и просто посмотреть и посмотреть, какой путь кода сделан. Отладчики, такие как gdb, могут работать относительно эффективно, потому что они работают через ядро ​​и не изменяют код, они просто получают информацию, когда каждая строка выполняется. Если что-то заставляет блок выходить раньше (longjmp), отладчик может подключить его и выяснить, как далеко он попал в блоки, когда это произошло, и увеличивать только те строки.

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

2

Долгосрочная система TurboPower также имела большой инструмент для профилирования/анализа для Delphi, называемый Sleuth QA Suite. Я нашел это намного проще, чем AQTime, но также намного легче получить осмысленный результат. Может быть стоит попытаться отследить - может быть, eBay?

+0

Вероятно, будет работать до Delphi 5. – 2011-05-23 03:12:07

9

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

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

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

  • Нет связанных вопросов^_^