當我運行下面的腳本:perl - 使用太多內存的整數數組?
my @arr = [1..5000000];
for($i=0; $i<5000000; $i++) {
$arr[$i] = $i;
if($i % 1000000 == 0) {
print "$i\n";
}
}
它消耗大約500 MB的內存。用於更高級的編譯語言,我期望它大約是5M * 4B = 20MB(每個數字4個字節)。
我想這是因爲每個值是一個標量,而不是一個簡單的二進制數。是否可以通過將這些值作爲數字來減少內存佔用量,或者對於此任務是唯一的方法是500 MB?
問題的一部分是'my @arr = [1..5000000];'是一個錯誤,不會做你想做的事情。如果你寫了'my @arr =(1..5000000);',你可能會看到更少的用法。或者只是'my @arr;',因爲你沒有使用任何你初始化的值。 – hobbs
@hobbs - 我爲儘可能簡單的例子而做出的。我真正的腳本確實使用數組。 –