【发布时间】:2010-09-23 06:21:05
【问题描述】:
总结
当我使用 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 seconds、Usr、Sys、CPU?可以推断它们以获得毫秒值吗?现在,对于我的基准测试,我只需要一次执行的真实时间,而无需考虑基准测试的一些更深奥的方面。
【问题讨论】:
-
你真的,真的想要“使用 Benchmark ':hireswallclock'”或者首先避免以这种方式使用模块。 “挂钟”时间是您的“现实世界时间”。尝试使用宏观运行时对代码片段进行基准测试。如果这是不可能的,因为额外的循环会使结果产生过多的偏差,那么您就是在进行微优化,我们都知道您不应该这样做。
-
只运行一次不会给你一个好的结果。您需要运行数千次操作才能获得有用的真实(平均)数据。
标签: perl system benchmarking