1

我的 Perl 脚本有我不理解的奇怪行为。我正在处理存储为哈希数组的大型结构,该数组在处理时会增长。问题是当我将结构存储在硬盘上时,它的最大容量约为 8mb,但在处理时它需要大约 130mb 的内存。为什么差别这么大?

处理的主要流程如下所示:

while(...)
{
    my %new_el = %{Storable::dclone \%some_el};

    # ...
    # change a few things in new_el
    # ...

    push @$elements_ref, \%new_el; 
}
4

1 回答 1

1

您制作的数据副本超出了您的需要。尽量使用 hashrefs 而不是取消引用:

while (...)
{
    my $new_el = Storable::dclone \%some_el;

    # ...
    # change a few things in new_el
    # ...

    push @$elements_ref, $new_el; 
}

最好不要克隆整个散列——也许你可以原地改变它?

于 2010-04-09T18:23:05.360 回答