我有一个用perl构建的中型到大型系统,它是在过去15年中开发的,由许多脚本和pm文件构建, 并且为了改进系统我需要更多的数据,我看到它获取这些数据的最简单的方法是让代码中的每个函数打印出一些日志的开始和结束时间,这样就有可能理解什么花了最多的时间。 然而,这是一个旧系统,有些部件比其他部件更难维护,除此之外,我需要它运行,这意味着为了获得真实数据,我需要它从生产中打印出来。 我想要做的是以某种方式覆盖函数declration来包装每个函数start在一行中 NAME启动STARTTIME PARAMS 当它离开功能时 NAME结束了STARTTIME PARAMS
有人能指出我正确的方向吗? 感谢
答案 0 :(得分:6)
看看Devel::NYTProf
。它可以描述你所有潜水员正在服用的时间量(并做更多)。它不涉及很多杂乱的代码修改;相反,你只需用它运行你的脚本:
perl -d:NYTProf your_script.pl
答案 1 :(得分:1)
以前的答案很明显(我特别推荐Devel::NYTProf)。但是,通常可以应用于收集有关子例程行为的数据的更通用的技术是摆弄符号表,将“附加”(或前置)代码添加到实际子代码中。
有几点指示:
HTH
答案 2 :(得分:0)
答案 3 :(得分:0)
Perl剖析器通常会对程序性能产生巨大影响,因此在生产中使用它们可能不是一个好主意。
您可以尝试Devel::ContinuousProfiler声称效果非常低(我自己从未使用它,今天早上才发现它!)