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

时间:2010-09-23 06:21:06

标签: perl system benchmarking

摘要

当我使用Perl的Benchmark实用程序执行一个非常简单的程序时。我得到的值不是(显示为)毫秒或纳秒。返回的基准数据对我没用,因为我不知道如何解释它。

示例:

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)

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

1 个答案:

答案 0 :(得分:7)

Wallclock秒是实际经过的时间,就像你看着手表计时一样。

user space中实际花费在CPU上的时间的秒数。

sys seconds是在内核空间中花在CPU上的实际时间。

CPU时间是CPU上花费的总时间。

然而,一旦掌握了所有这些,就必须弄清楚你实际想要衡量的是什么。 Benchmark模块仅对您在本地计算机上执行的操作进行计时。如果必须在远程计算机(例如数据库服务器或Web服务器)上启动进程,则这些计算机的CPU时间不是结果的一部分。但是,等待响应的时间是挂钟时间的一部分。

您的结果显示一切都在瞬间发生。你需要更丰富的东西,所以它需要一些时间。如果您只需要一次运行的挂钟时间,则根本不需要使用Perl。从命令行使用times实用程序。

我在掌握Perl 和我的一些基准测试会话中相当广泛地介绍了这一点。然而,就在本周,我认为Benchmark模块已经过时了。 SteffenMüller的Dumbbench做得更好。在dumbbench查看他的blogs.perl.org博客条目。