perl - 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) { ... }
解决方案
该条件仅在最初计算(在循环开始之前),所以我认为它不会提高在循环之前预先计算数组的速度。示例:
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
推荐阅读
- mongodb - 如何让 mongo-express 在 docker-compose 中等待 mongo
- homebrew - Brew 安装 gcc 错误 - 管道损坏 (Errno::EPIPE)
- r - XLConnect 工作表名称太长
- c# - Unity - 仅在动画停止时更改角色
- json - Jq 变量添加额外的\
- python - 尝试使用 AES 128 CTR 复制以太坊密钥库文件
- android - onActivityResult 和路径或位图中的神奇相机错误为空
- python - 如何限制绘图以显示前 15 个最重要的特征
- android - 如何在 Docker 映像中填充 Gradle 缓存?
- java - 作为一个操作线程访问两个 AtomicInteger 是否安全?