我有一个需要大约30分钟运行的Perl脚本,所以我当然运行Devel :: NYTProf。很棒的配置文件。对于我的很多潜艇,我收到了一些对我无意义的数据。为什么NYTProf的逐行统计不符合总数?
我使用默认的NYTProf设置在Linux上运行perl 5.10.0。
在HTML输出中,每个子文件都有一个摘要部分,说明在子文件及其子文件中花费了多少时间,然后继续为我提供行信息。
行统计信息不会累加到函数中花费的总数。是什么赋予了?
例如,我有一个报告使用233s(57 + 166)的函数。逐行数字报告有一行使用20s,另一行使用4,另一行使用2.其他行是< 1s,功能不那么长。
我该怎么办才能解决这个不匹配问题?
我可以转移到Perl 5.12,但这需要一些工作来安装依赖关系。我很高兴以较慢的模式运行它。有没有办法提高采样频率?在较慢的机器上运行?
点击这里取样:my NYTProf output。在这种情况下,报告使用225秒,但添加所有数字将产生56秒。这让人们对他的优化关闭:
setenv NYTPROF optimize=0:file=nytprof.optout
更新我使用findcaller = 1个选项标志用Perl 5.12重新运行与或多或少相同的结果建议。 (我在不同的数据集上运行)
更新 Tim B是对的。我已经改变了一些我的关键子缓存来做缓存,而不是使用记忆,NYTProf结果再次有用。谢谢蒂姆。
嗯,我没有你的答案,但可以说我看到使用NYTProf类似的差异。据报道,我的脚本花费了大约10秒钟才运行cca 5分钟。这是在mod_perl下。 – jira 2010-10-27 22:57:40
你能告诉我们报告的截图,还是其他的东西,以便我们看到特定的情况? – 2010-10-28 04:03:40
@brian d foy:我已经添加了一些链接到我的一些输出 – mmccoo 2010-10-28 15:44:43