【发布时间】:2014-07-10 11:25:19
【问题描述】:
我有一个 Perl 程序,它最终会填充 5000 x 26 二维数组 ref 中的每个索引。
所以考虑一下:
my $aLarge2dArray;
for (my $i = 0; $i < 5000; $i++) {
for (my $j = 0; $j < 26; $j++) {
$aLarge2dArray->[$i][$j] = 'TRUE';
};
};
我在一台拥有大量内存的计算机上运行它,所以我不担心节省内存,但我热衷于速度。
我的直觉是,我会受益于预先声明 $aLarge2dArray 以使事情变得更快,我这样做如下:
my $aLarge2dArray;
$aLarge2dArray->[4999][25] = 0;
我的问题:
1) 这是在初始化时预先声明(和实例化)二维数组引用的正确/最佳方式吗?
2) 这会让事情变得更快吗(记住内存不是问题,我有足够的)?
感谢任何答案/指点。
【问题讨论】:
-
如果您想将其初始化为 false,您可能根本不需要初始化它,这要归功于自动激活。例如
$aLarge2dArray->[$i][$j]在功能上等同于(($aLarge2dArray //= [] )->[$i] //= [])->[$j] -
你预初始化的优势也可能没有你想象的那么大。
标签: arrays perl memory reference declaration