【发布时间】:2010-11-25 09:48:55
【问题描述】:
运行以下代码:
use strict;
use warnings;
use Benchmark;
my $defaultArray = [1,2,3,4];
sub VARIABLE {
my $arrayref = @_ ? $_[0] : $defaultArray;
return $arrayref->[0].$arrayref->[1].$arrayref->[2].$arrayref->[3];
}
Benchmark::cmpthese(
-10,
{
VARIABLE_DEFAULT => sub { VARIABLE() },
VARIABLE_NODEFAULT => sub { VARIABLE([4,3,2,1]) },
}
);
我得到以下基准测试结果:
Rate VARIABLE_NODEFAULT VARIABLE_DEFAULT
VARIABLE_NODEFAULT 313631/s -- -74%
VARIABLE_DEFAULT 1210501/s 286% --
为什么 NODEFAULT 版本比 DEFAULT 慢很多?
【问题讨论】:
-
不同的主题,但不要忘记你可以这样做:
join '', @$arrayref。
标签: perl benchmarking subroutine execution-time