【问题标题】:How to read NYTProf html reports?如何阅读 NYTProf html 报告?
【发布时间】:2014-02-02 15:50:22
【问题描述】:

我对 nytprofhtml 生成的 Devel::NYTProf 报告完全感到困惑。我正在使用旧版本的 NYTProf 1.90。我知道它是非常旧的版本,但出于多种原因应该使用它。

所以这些 HTML 报告看起来有点像 像这样(查看特定的 *.pl 文件报告时):

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

我从未见过新版 nytprofhtml 的报告,所以不确定它们是否相同。

在我的情况下,这一行是整个程序中最慢的部分(它不是一个小程序)。 所以我的问题是如何声明这样的'};'成为程序中最慢的部分,语句更复杂。我认为误解了 NYTProf 的报道。

如果我的问题令人困惑,请给我这些报告中每一列的定义,这会有所帮助吗?这会有很大帮助。

特别是我对Stmts 感兴趣。意思是。我在猜,但我不想猜!

提前致谢。

【问题讨论】:

    标签: perl debugging profiling devel-nytprof


    【解决方案1】:

    Stmts. 是语句执行的次数,或者更准确地说,是从与该行关联的语句(即not always accurate)移动到下一个执行语句的次数。

    Time 是执行与该行相关的语句所花费的时间总和。

    Avg. 就是Time 除以Stmts.

    current Devel::NYTProf documentation 的这些摘录可能会有所帮助:

    语句分析器测量输入一个 perl 语句和输入下一个语句之间的时间。每当执行到一个新语句时,就会计算自进入前一个语句以来的时间,并将其添加到与前一个语句开始所在的源文件行相关联的时间。 [...]

    例如,给定:

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

    在第一次循环之后,任何进一步花费在评估条件(在此示例中等待输入)的时间都将被记录为已花费在循环中执行的最后一条语句上。

    NYTProf 的最新版本(其中有很多)通过拦截适当的内部循环操作码以及many other significant improvements,为这种情况提供更多更准确的计时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多