首页 > 解决方案 > Perl 循环中的条件和性能

问题描述

Perl 中有许多习惯用法,在循环条件中使用运算符/函数/子程序/方法。书籍建议使用它们!但据我了解,这些条件是每次迭代计算的。我对吗?

Perl 5:

foreach my $key (keys %hash) { ... }
for my $value (values %hash) { ... }

Perl 6:

for 'words.txt'.IO.lines -> $line { ... }
while $index < $fruit.chars { ... }

为什么程序员不在循环之前为某个变量分配条件并在循环中使用该变量?它会提高速度。所以第一个例子看起来像这样:

my @array = keys %hash;
foreach my $keys (@array) { ... } 

标签: perl

解决方案


该条件仅在最初计算(在循环开始之前),所以我认为它不会提高在循环之前预先计算数组的速度。示例:

for my $key (get_keys()) {
    say $key;
}

sub get_keys {
    say "Calculating keys..";
    return qw(a b c d);
}

输出

Calculating keys..
a
b
c
d

推荐阅读