Что такое «не собранные вызовы во внешнем» в Perl Devel :: DProf? - PullRequest
6 голосов
/ 16 декабря 2008

Я профилирую приложение Perl с perl -d:DProf. При запуске dprofpp в результирующем файле tmon.out я получаю такие предупреждения:

Compress::Zlib::__ANON__ has 5 unstacked calls in outer
Compress::Zlib::AUTOLOAD has -5 unstacked calls in outer
  • Что такое вызов без учета стека?
  • Кто или что является «внешним»?
  • Что означают цифры? Как может быть отрицательное количество звонков?
  • Должен ли я волноваться?

1 Ответ

9 голосов
/ 16 декабря 2008

Я сделаю снимок:

  • Не собранные вызовы указывают, что когда DProf анализировал профиль, он столкнулся с большим (или меньшим) количеством вызовов в стеке (в профиле), чем ожидалось, что означает, что данные профилирования неверны.
  • «внешний» относится к внутренней переменной %outer в DProf, которая (по-видимому) отслеживает количество стеков при анализе профиля.
  • Числа показывают, сколько вызовов DProf ожидал найти против того, сколько он нашел. 5 означает, что вызовов больше, чем ожидалось, -5 означает, что их на 5 меньше. Опять же, это потому, что данные профиля повреждены.
  • Я бы не стал беспокоиться о целостности вашего кода, потому что AFAIK это связано с ошибками в реализации самого DProf. Кажется, DProf запутался при записи файла tmon.out. Однако остальные результаты из dprofpp могут быть ненадежными из-за этой неточности. Итак, вам следует немного беспокоиться о точности этих результатов.

Возможно, вы захотите взглянуть на модуль альтернативного профилирования, например Devel :: NYTProf

...