【发布时间】:2013-04-03 18:15:46
【问题描述】:
我有一个数组哈希。这是最有效和最快的循环方式。
my %h1 = (
C1 => ['3','1','2'],
C2 => ['6','2','4'],
C3 => ['8', '1'],
);
选项 1
foreach my $key ( keys %HoA ) {
print "Articles in group $key are: ";
foreach ( @{$HoA{$key}} ) {
print "$_\n";
}
}
选项 2
while( my ($k, $v) = each %HoA ) {
print "Articles in group $k are: @$v\n";
}
如果我要循环浏览一个巨大的 HoA,哪一个会节省我的时间。
【问题讨论】:
-
你的基准测试告诉你什么?
-
目前我有一个子程序,我正在使用嵌套的 for 循环(选项 1)循环一个大型 HoA。使用嵌套的 for 循环,子例程大约需要。运行 5-12 秒。我还没有尝试使用 while 循环遍历 HoA。
-
这两个是不等价的。选项 2 不会打印数组的内容。
-
@Borodin 修复了它但是,我意识到我需要使用数组的每个元素作为键,所以我可能仍然需要使用嵌套循环。
-
听起来你应该使用数据库
标签: performance perl optimization hash memory-efficient