我对 nytprofhtml 生成的 Devel :: NYTProf 报告感到困惑。我使用旧版NYTProf 1.90。我知道它是非常旧的版本,但出于多种原因应该使用它。
所以这些HTML报告看起来很像 像这样(当查看特定的* .pl文件报告时):
|Line|Stmts.| Time | Avg. |Code|
|42 | 6804 | 0.04506 | 7e-06 | }; |
我从未见过新版本的nytprofhtml的报告,所以不确定它们是否一样。
在我的情况下,这一行是整个程序中最慢的部分(它不是一个小程序)。 所以我的问题是如何声明这样'};'在程序中最慢的部分有更复杂的语句。我认为误解了NYTProf的报道。
如果我的问题令人困惑,请告诉我这些报告中每列的定义,这会有所帮助吗?这将有很大帮助。
特别是我对Stmts
感兴趣。意思。我猜,但我不想猜!
提前致谢。
答案 0 :(得分:8)
Stmts.
是语句执行的次数,或者更确切地说,是执行从与该行关联的语句(not always accurate)移动到下一个执行的语句的次数
Time
是执行与该行关联的语句所花费的时间的总和。
Avg.
只是Time
除以Stmts.
current Devel::NYTProf documentation的这些摘录可能有所帮助:
语句分析器测量输入一个perl语句和输入下一个语句之间的时间。每当执行到达新语句时,计算自进入上一语句以来的时间并将其添加到与前一语句开始的源文件行相关联的时间。 [...]
例如,给定:
while (<>) {
...
1;
}
在循环第一次之后,用于评估条件的任何进一步时间(在此示例中等待输入)将被记录为已经花费在循环中执行的最后一个语句上。
更多近期版本的NYTProf,其中有许多版本,通过截取相应的内部循环操作码加上many other significant improvements,为这种情况提供了 更准确的时间。