一些 Perl 书籍建议在调用类方法时使用括号,称这有助于使解析器不必猜测代码的意图。然而,我见过的几乎所有 Perl 代码(包括 cpan 上的模块)在调用不带参数的方法时很少使用括号。
省略这些括号是正常的还是我应该总是输入它们?
我编写了一个小测试代码来测量调用带括号和不带括号的方法之间的差异,对于仅具有两个方法的类,它确实显示了 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% --
我想如果应用程序使用数百个模块,并且每个模块有数百个不带括号调用的方法,这是否会增加很多速度差异?
如果是这样,为什么每个人都在没有括号的情况下编码?
1% 的差异是系统噪声。两个版本都编译为完全相同的字节码,因此它们之间不可能存在系统差异。使用使您的代码更易于阅读的变体。
如果你想看看它编译成什么,你可以这样做:
perl -MO=Concise -E '$foo->bar()'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)