Intel Pin: измерение пустых затрат на оборудование - PullRequest
0 голосов
/ 30 мая 2018

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

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

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

  1. Наличие пустогоФункция обратного вызова изображения, которая вызывается при загрузке каждого изображения вместо обычной
  2. Наличие пустых функций рутинного анализа, которые должны вызываться вместо обычных

Является ли этот подход жизнеспособным?Есть ли лучшие решения, о которых я не знаю?

1 Ответ

0 голосов
/ 31 мая 2018

Pin выполняет ряд оптимизаций для генерации очень эффективного инструментального кода.В частности, пустые подпрограммы анализа обязательно будут встроены в подпрограммы приложения.Пустые функции в C / C ++, скорее всего, будут скомпилированы в одну инструкцию (в x86 это какая-то форма ret).Пин может быть в состоянии распознать это и полностью удалить эту инструкцию, оставляя вас без инструментов.Вы можете определить, удаляет ли Pin ret, сравнивая производительность без каких-либо инструментов и производительность с пустыми процедурами анализа.Если разница равна нулю, есть большая вероятность, что Пин исключил инструкцию.Хотя, насколько я знаю, это не задокументировано.

...