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

标签 perl performance optimization time benchmarking

我想了解测量 CGI Perl 代码在各个阶段的执行持续时间的技术(编码、库、配置):

  1. 启动 Perl 解释器
  2. 开始运行 Perl 代码
  3. 加载本地 Perl .pm 模块以用于例程
  4. 完成代码运行

我对 3 和 4 特别感兴趣,我不相信我对 1) 或 2) 能做多少,因为我不想尝试优化 Perl 解释器,这是我唯一能做的事情这里是将硬件升级到更快的机器和/或使用 mod_perl 而不是经典的 CGI。

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

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

我在 stackoverflow.com 上进行了搜索并发现:

Google 搜索结果包括:

最佳答案

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

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

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。

关于perl - 我如何在执行的各个阶段进行 Perl CGI 性能测量、基准测试、时间测量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400058/

相关文章:

json - 如何递归搜索与给定模式匹配的所有节点的 JSON 文件并将 JSON 'path' 返回到节点及其值?

perl - 打开/操作目录中所有文件的最有效方法是什么?

linux - 运行 'cat' 可以加快 Linux 机器上后续文件随机访问的速度吗?

java - SQL 性能 : Multiple Binds or Bind to One SQL Variable for Re-use?

r - 您将如何优化 NxN 表?

ruby - 从 ruby​​ 的独家范围中获得最大值(value)的最快方法

.net - .Net 中没有 'payload' 值的字典

linux - perl 获取文件中的输出以及 STDERR 和 STDOUT

regex - 何时使用相等运算符而不是绑定(bind)运算符

objective-c - 我可以在 iOS 上进行这种代码矢量化吗?有哪些替代方案?