Как читать html отчеты NYTProf?

Я полностью сбит с толку отчетами Devel::NYTProf, сгенерированными nytprofhtml. Я использую старую версию NYTProf 1.90. Я знаю, что это очень старая версия, но следует использовать ее по ряду причин.

Таким образом, эти HTML-отчеты выглядят примерно так (при просмотре определенного отчета *.pl-файла):

|Line|Stmts.|   Time   |  Avg. |Code|
|42  | 6804 | 0.04506  | 7e-06 | }; |

Я никогда не видел отчетов из новой версии nytprofhtml, поэтому не уверен, что они выглядят одинаково.

В моем случае эта строка является самой медленной частью всей программы (это не маленькая программа). Поэтому мой вопрос: как можно утверждать, что это '};' быть самой медленной частью в программе с гораздо более сложными утверждениями. Я думаю, что неправильно понимаю, что сообщает NYTProf.

Если мой вопрос сбивает с толку, просто дайте мне определения каждого столбца из этих отчетов, это поможет? Это очень поможет.

Особенно мне интересно, что Stmts, имею в виду. Я догадываюсь, но я не хочу угадывать!

Заранее спасибо.

1 ответ

Решение

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

Time сумма времени, затраченного на выполнение операторов, связанных с этой строкой.

Avg. это просто Time деленное на Stmts.

Эти выдержки из текущей документации Devel::NYTProf могут помочь:

Профилировщик операторов измеряет время между вводом одного оператора perl и вводом следующего. Всякий раз, когда выполнение достигает нового оператора, время с момента ввода предыдущего оператора вычисляется и добавляется к времени, связанному со строкой исходного файла, с которого начинается предыдущий оператор. [...]

Например, учитывая:

while (<>) {
    ...
    1;
}

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

Более поздние версии NYTProf, которых существует много, предлагают гораздо более точную синхронизацию для этой ситуации, перехватывая соответствующие коды операций внутреннего цикла, а также многие другие существенные улучшения.

Другие вопросы по тегам