【问题标题】:How can I do perl CGI performance measurements, benchmarks, time measurements at various stages of execution?如何在执行的各个阶段进行 perl CGI 性能测量、基准测试、时间测量?
【发布时间】:2011-05-22 22:51:44
【问题描述】:

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

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

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

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

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

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

包括谷歌搜索结果:

【问题讨论】:

    标签: perl performance optimization time benchmarking


    【解决方案1】:

    您可以使用 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 并接受了答案 - 几乎是我需要的一切。谢谢@Alexandr Ciornii
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 2022-09-26
      • 2011-02-02
      • 1970-01-01
      • 2015-07-25
      相关资源
      最近更新 更多