gpt4 book ai didi

perl - Perl:为什么在循环中声明(我的)变量会更慢?

转载 作者:行者123 更新时间:2023-12-04 13:21:19 25 4
gpt4 key购买 nike

以下程序与解释器的POV有什么区别:

#!/usr/bin/perl -w

use strict;

for (1..10000000) {
my $jimmy = $_**2;
}


#!/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

最佳答案

Perl中的my声明有两个主要作用:一个编译时(其中在包含子项的暂存器上分配一个插槽,并确保在适当范围内对该名称的所有引用都解析为该特定暂存器插槽),以及一个运行时(其中将其重置值)该填充插槽到undef,或者如果您写了my $var = foo,则为某个特定值)。

当然,编译时部分的运行时成本为零,但是每次执行通过my声明时,运行时部分便会运行一次。正如其他人指出的那样,您的两个示例通常具有不同的语义,因此它们具有不同的性能-一个示例每次在循环中清除变量,另一个示例则不。

关于perl - Perl:为什么在循环中声明(我的)变量会更慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com