我有一个Perl程序,它将最终填充5000 x 26 2-D阵列参考中的每个索引。
所以考虑一下:
my $aLarge2dArray;
for (my $i = 0; $i < 5000; $i++) {
for (my $j = 0; $j < 26; $j++) {
$aLarge2dArray->[$i][$j] = 'TRUE';
};
};
我在计算机的野兽上运行这个TONS的内存,所以我不担心节省内存,但我热衷于速度。
我的直觉是,我会受益于预先定义$ aLarge2dArray以使事情变得更快,而且我已经完成了如下操作:
my $aLarge2dArray;
$aLarge2dArray->[4999][25] = 0;
我的问题:
1)这是在初始化时预先(并实例化)2d数组ref的正确/最佳方法吗?
2)这会让事情变得更快(记住记忆不是问题,我有足够的东西)?
感谢您的任何答案/指示。
答案 0 :(得分:2)
不,你只会将最后一个数组中的最后一个单元格设置为零,
my $aLarge2dArray;
$aLarge2dArray->[10][5] = 0;
use Data::Dumper; print Dumper $aLarge2dArray;
输出
$VAR1 = [
undef,
undef,
undef,
undef,
undef,
undef,
undef,
undef,
undef,
undef,
[
undef,
undef,
undef,
undef,
undef,
0
]
];
你可能想试试这个,
@$aLarge2dArray = map [ (0) x26 ], 0..4999;