如何配置我的Perl程序?

时间:2010-12-06 22:46:38

标签: perl profiling

我需要提高Perl应用程序的性能。我怎样才能找到慢点?


这是来自official perlfaq的问题。我们是importing the perlfaq to Stack Overflow

3 个答案:

答案 0 :(得分:43)

(这是official perlfaq answer,减去任何后续修改)

Devel命名空间有几个模块可供您使用 配置你的Perl程序。 Devel::DProf模块附带Perl,您可以使用-d开关调用它:

$ perl -d:DProf program.pl

DProf下运行程序后,您将获得 tmon.out 文件 与个人资料数据。要查看数据,您可以将其转换为 带有dprofpp程序的人类可读报告 Devel::DProf

$ dprofpp

您还可以使用-p一步完成分析和报告 切换到dprofpp

$ dprofpp -p program.pl

Devel::NYTProf(New York Times Profiler)同时进行语句和子例程分析。它可以从CPAN获得,您也可以调用它 它与-d开关:

$ perl -d:NYTProf some_perl.pl

DProf一样,它会创建您的个人资料信息数据库 可以变成报告。 nytprofhtml命令将数据转换为 与Devel::Cover报告类似的HTML报告:

$ nytprofhtml

CPAN还有其他几个可以在同一个中调用的分析器 时尚。您可能也有兴趣使用C语言 衡量和比较代码片段。

您可以在 Programming Perl 中阅读有关分析的更多信息,第20章, 或掌握Perl ,第5章。

如果需要,

perldebguts文档创建自定义调试器 创建一种特殊的分析器。 brian d foy描述了这个过程 在 Perl期刊"Creating a Perl Debugger""Profiling in Perl"

Perl.com有两篇关于性能分析的有趣文章:"Profiling Perl", 作者:Simon Cozens和"Debugging and Profiling mod_perl Applications"作者:Frank Wiles。

Randal L. Schwartz写了关于 Unix Review "Speeding up Your Perl Programs" Linux Magazine "Profiling in Template Toolkit via Overriding"的分析。

答案 1 :(得分:12)

我已经切换到使用Devel::NYTProf,这是Perl组合的最佳分析,最初是纽约时报的人们。

答案 2 :(得分:3)

有一种非常简单的方法可以找到慢点,以便提高程序的效果 - random-pausing

基本上,这个想法是,而不是衡量什么部分是缓慢的,你让它的缓慢暴露给你。

使用调试标志-d运行程序,并在程序运行时,手动中断,并显示调用堆栈(T)。这样做几次,比如5或10.查找出现在多个堆栈上的任何语句并非绝对必要,因为它负责的时间大致是堆栈的百分比表明它。

这不仅可以找到热点,还可以找到昂贵地调用函数的行。无论程序是I / O还是CPU绑定,它都可以正常工作,并且机器上的其他内容无关紧要。

你可以做多次,直到找不到任何可以加速的东西。