一些Perl书籍建议在调用类方法时使用括号,这有助于避免分析器猜测代码的意图。然而,几乎所有我见过的Perl代码(包括cpan上的模块)在调用没有参数的方法时很少使用括号。带有和不带圆括号的Perl调用方法
忽略这些括号是正常的,还是应该始终输入它们?
我写了一个小测试代码来测量调用有括号和不带括号的方法之间的差异,并且对于仅使用两种方法的类,实际上显示1%和2%之间的小差异。我想如果这个班很大,这可能会提高。
这里是测试脚本我用基准:
#!/usr/bin/perl
use Benchmark qw(:all);
{
package Messages;
sub new {
my ($self) = @_;
return bless {}, $self;
}
sub message {
my ($self) = @_;
return "Hello world";
}
sub another {
my ($self) = @_;
return "Another Hello world";
}
}
my $class = Messages->new();
cmpthese(10_000_000, {
'with () ' => sub { $class->message() },
'without () ' => sub { $class->message },
});
,这是基准的结果:
Rate without() with()
without() 3320053/s -- -1%
with () 3338898/s 1% --
如果应用程序使用数百个模块,每个模块有我想象数百种不带圆括号的方法,这是否会增加很多速度差异?
如果是这样,为什么每个人都没有括号编码?
如果仅仅是编译时间,那么为什么这种运行时间的差异就像您看到上面的基准一样。 – daliaessam 2014-08-27 10:05:21
1%可能是由系统上的其他原因造成的。不知道我是否会过多地指望这一点。但这确实是一个公平的观点。使用括号是更好的练习,我绝对同意这一点。如前所述,人们可能会这样做,因为他们可以。 – smnpl 2014-08-27 10:10:56