Время выполнения NYTProf при профилировании и при отсутствии профилирования
Просто хотел убедиться.
У меня есть небольшой скрипт Python, который измеряет время выполнения программы, он просто экономит время до запуска внешней программы, а затем вычитает это значение из времени после завершения программы.
При запуске этого сценария на Perl-скрипте он показывает время выполнения 0,49263, а при запуске того же сценария с NYTProf и просмотре отчета HTML, созданного nytprofhtml, я вижу, что время выполнения составляет 0,80784, почти вдвое больше.
Это нормально? Я полагаю, что профилирование должно увеличить время выполнения, но так сильно?
1 ответ
Это нормально, потому что Devel::NYTProf должен проверять каждый отдельный оператор (и блоки, и так далее). Для каждого оператора необходимо записать данные профилирования на диск. Стоимость этого довольно высока. Вот почему вы не должны запускать его в производство.
Есть некоторая информация о том, как сделать это быстрее в документации.
Если вы работаете в командной строке Linux, никакие другие программы не нуждаются в получении времени выполнения команды. Просто сделайте это на оболочке:
$ time perl foo.pl