以下简单的C代码分配了大约1.6%的计算机内存,并在不到2秒的时间内完成:
main()
{
int i = 0;
char *array = malloc(64000000);
for (i = 0; i < 64000000; i++) {
array[i] = i % 256;
}
getchar();
}
如何在Perl中做类似的事情?
下面的Perl代码消耗了大约70%的计算机内存(我杀死了它)
my @array;
for(my $i=0;$i<64000000;$i++)
{
$array[$i]=1;
}
getc();
exit;
您分配了一个包含64,000,000个SV*
和64,000,000个标量的数组。这个数组本身已经是你在C程序中分配的数组的8倍大了。这还不包括64,000,000个标量或分配64,000,000个内存块的开销。
要分配64,000,000字节,可以使用以下命令:
my $s = "