【发布时间】:2011-05-21 06:42:29
【问题描述】:
【问题讨论】:
-
FWIW,perlperf 手册中有一个关于分析工具的部分,虽然我不知道它是最新的:perldoc.perl.org/perlperf.html#PROFILING-TOOLS
【问题讨论】:
我已经转而使用 Devel::NYTProf,这是 Perl 组合中最好的配置文件,最初由 NYTimes 的人提供。
【讨论】:
(这是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 来 测量和比较代码 sn-ps。
您可以在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" 中写了关于性能分析的文章。
【讨论】:
有一种非常简单的方法可以找到慢点,这样您就可以提高程序的性能 - random-pausing。
基本上,这个想法是,与其衡量看看哪个部分慢,不如让其缓慢暴露给您。
使用调试标志-d 运行程序,并在运行时手动中断它,并显示调用堆栈(T)。这样做几次,比如 5 或 10 次。查找出现在多个堆栈上的任何语句并且不是绝对必要的,因为它负责的时间大约是堆栈的百分比显示它。
这不仅可以找到热点,还可以找到函数调用成本高昂的行。无论程序是 I/O 还是 CPU 密集型,它都能正常工作,而且机器中发生的其他事情都无关紧要。
你可以做不止一次,直到你找不到任何可以加速的东西。
【讨论】:
perl -d:NYTProf some_perl.pl 运行之外,还可以生成非常漂亮的html 页面,易于浏览。