将txt文件读入perl的哈希值

igg*_*ggy 0 memory perl hash file

Hej敏锐的头脑!

我需要将文本文件加载到哈希中.一行是键,下一行是值.并且重复了数百万次.有什么建议如何以最好的方式做到这一点?

如果我们说密钥是15个字符而值是50个字符,哈希表需要多少内存?

谢谢

e.d*_*dan 5

以下代码应将文本文件加载到哈希中:

my %hash;

while (chomp(my $key = <DATA>)) {
    chomp(my $val = <DATA>);
    $hash{$key} = $val;
}
Run Code Online (Sandbox Code Playgroud)

散列条目的内存开销将取决于体系结构(32对64位),但对于散列本身应该是几百个字节的顺序,然后每个键和值大约30-60个字节,加上开销键和值数据类型.您可以Devel::Size自己检查一下.还读这个.

因此,在您的示例中,在64位平台上,一百万个条目应该大致花费:

136为哈希

58 + 15 + 58 + 50 == 181每个键/值对x 1,000,000

您指定的一百万个条目的条目为181MB.