【发布时间】:2011-03-22 19:41:39
【问题描述】:
好的,这就是交易。我有一个数组(从 400 MB 文件输入),如果我在其中运行 sort() 命令,comp 内存不足。输入文件不是问题,所以我决定将初始数组分解成更小的数组,我可以对其执行排序。我可以将初始数组分解为大小为 100k 的数组,我的代码就是这样做的。
(出于本次测试的目的,我已将文件从 400 MB 缩小到 40 MB)
我运行我的中断数组代码,在第一次迭代时,我在@arrayList 中有一个 100k 的数组作为参考。我的代码是这样的:
push @arrayList, \@sorted; #@sorted is the sorted version of the 100k array
$temp = @arrayList; #returns 1, which it should
@arrayTemp2 = @{$arrayList[0]};
$temp = @arrayTemp2; #returns 100k, which it should
@arrayTemp2 = @{$arrayList[1]};
$temp = @arrayTemp2; #returns 0 since it is uninitialized
在 for 循环的下一个循环中,排序后的数组是初始数组的其余部分,只有 23k。再次运行相同的代码,结果如下:
push @arrayList, \@sorted; #@sorted is the sorted version of the 23k array
$temp = @arrayList; #returns 2, which it should
@arrayTemp2 = @{$arrayList[0]};
$temp = @arrayTemp2; #returns 23301, which is wrong
@arrayTemp2 = @{$arrayList[1]};
$temp = @arrayTemp2; #returns 23301, which is right.
我已尝试使用我能想到的所有不同方式来解决此问题,但我没有任何想法。有什么帮助吗?
谢谢
【问题讨论】: