从口译员的视角来看,以下程序之间有什么区别:
#!/usr/bin/perl -w
use strict;
for (1..10000000) {
my $jimmy = $_**2;
}
and
#!/usr/bin/perl -w
use strict;
my $jimmy;
for (1..10000000) {
$jimmy = $_**2;
}
《时代》杂志第一个节目的报道:
real 0m1.519s
user 0m1.513s
sys 0m0.004s
对于第二个:
real 0m1.023s
user 0m1.012s
sys 0m0.002s
The my
Perl 中的声明有两个主要作用:一个是编译时的(其中它在包含子程序的暂存器上分配一个槽,并确保在适当范围内对该名称的所有引用都解析为该特定的暂存器槽),另一个是运行时的(其中它重置该垫槽到undef
,或者如果你写了某个特定的值my $var = foo
).
当然,编译时部分的摊销运行时成本为零,但运行时部分在每次执行通过 my 声明时运行一次。正如其他人指出的那样,您的两个示例具有不同的性能,因为它们具有不同的语义一般来说,一个每次循环都会清除变量,而另一个则不会。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)