Почему построчная статистика для NYTProf не совпадает с итогами?

У меня есть сценарий Perl, запуск которого занимает около 30 минут, поэтому, конечно, я запускаю Devel :: NYTProf. Отличный профайлер. Для многих из моих сабов я получаю данные, которые не имеют для меня смысла.

Я работаю с perl 5.10.0 в Linux, используя настройки NYTProf по умолчанию.

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

Статистика строки не суммируется с общими затратами на функцию. Что дает?

Например, у меня есть функция, которая, как сообщается, использует 233s (57 + 166). В построчном отчете о номерах одна строка использует 20, другая - 4, а третья - 2. Остальные строки

Что я могу сделать, чтобы устранить это несоответствие ?

Я мог бы перейти на Perl 5.12, но это потребует некоторой работы, чтобы установить зависимости. Я счастлив запустить его в более медленном режиме. Есть ли способ увеличить частоту дискретизации? Работать на более медленной машине?

Щелкните здесь, чтобы просмотреть образец: мой вывод NYTProf . В этом случае сообщается, что субподряд использует 225 секунд, но сложение всех чисел дает 56 секунд. В этом прогоне была отключена оптимизация:

setenv NYTPROF optimize=0:file=nytprof.optout

Обновление Я повторно запустил Perl 5.12, используя флаг опции findcaller = 1, как предлагалось, с более или менее теми же результатами. (Я использовал другой набор данных)

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

8
задан mmccoo 11 November 2010 в 15:03
поделиться