如何在执行的各个阶段进行perl CGI性能测量,基准测试,时间测量?

时间:2010-12-09 15:42:50

标签: perl performance optimization time benchmarking

我想知道在不同阶段测量CGI Perl代码执行持续时间的技术(编码,库,配置):

  1. 启动Perl解释器
  2. 开始运行Perl代码
  3. 在本地Perl .pm模块中加载例程
  4. 已完成运行代码
  5. 我对3和4特别感兴趣,我不相信我可以做的很多1)或2)因为我不想尝试优化Perl解释器,我唯一可以做的事情这里是将硬件升级到更快的机器和/或使用mod_perl而不是经典的CGI。

    使用3)加载本地Perl模块我想测量它需要多长时间,但我不知道如何编码,因为我不知道(或不确定)如何在加载前获取代码这些模块。如果我知道,那么我会在加载之前记录时间,然后记录加载后的时间并计算差异。

    4)应该是最容易获得的,因为我会在开始执行时记录时间(在变量中),然后在结束时记录。

    我在stackoverflow.com上搜索过并发现:

    Google搜索结果包括:

2 个答案:

答案 0 :(得分:4)

您可以使用FastCGI减少1)。它也将减少阶段2)和3)。

对于测量3),您可以使用BEGIN块。例如:

use Benchmark ':hireswallclock';
my ($t0,$t1);
BEGIN {$t0 = Benchmark->new;}
use DBIx::Class;
BEGIN {$t1 = Benchmark->new;}
print "the loading took:",timestr(timediff($t1, $t0)),"\n";

Deve :: NYTProf将帮助您4)。还有特定的模块,如Template :: Timer,CGI :: Application :: Plugin :: DevPopup :: Timing,DBIx :: Class :: Storage :: Statistics。

答案 1 :(得分:2)

除了FastCGI之外,还有mod_perl,更重要的是PSGI。使用PSGI,您可以将应用程序与具体的Web服务器后端分离。