代码之家  ›  专栏  ›  技术社区  ›  Elijah

如何解释Perl的基准测试模块报告的基准测试时间?

  •  3
  • Elijah  · 技术社区  · 14 年前

    例子:

    use Benchmark;
    
    my $start = Benchmark->new;
    print "foo!";
    my $end = Benchmark->new;
    
    my $diff = timediff($end, $start);
    
    print timestr($diff);
    

    退货: foo! 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)

    不同的字段是什么意思:挂钟秒、Usr、Sys、CPU?它们可以外推得到毫秒值吗?现在对于我的基准测试,我所需要的只是一次执行的真实时间,而不需要考虑基准测试的一些更深奥的方面。

    1 回复  |  直到 14 年前
        1
  •  7
  •   brian d foy    14 年前

    挂钟秒是实际经过的时间,就像你看表计时一样。

    user space .

    sys seconds是在CPU上实际花费的时间,以内核空间为单位。

    然而,一旦你拥有了所有这些,你就必须弄清楚你真正想要衡量的是什么。基准测试模块只对您在本地计算机上所做的操作执行次数。如果您必须在远程机器(例如数据库服务器或web服务器)上启动进程,那么这些机器的CPU时间不属于结果的一部分。然而,你等待他们回复的时间是挂钟时间的一部分。

    你的结果显示一切几乎都是瞬间发生的。你需要更多的肉在那里,所以它需要一些时间。如果您只需要一次运行的挂钟时间,那么根本不需要使用Perl。使用 times 命令行中的实用程序。

    我在这方面的研究相当广泛 还有我的一些标杆谈判。然而,就在本周,我认为基准模块已经过时了。斯特芬·姆勒的 Dumbbench 做得更好。看看他的 dumbbench 博客条目 blogs.perl.org .