将文本文件读入perl哈希

时间:2011-10-03 06:37:25

标签: perl file memory hash

Hej敏锐的头脑!

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

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

由于

1 个答案:

答案 0 :(得分:5)

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

my %hash;

while (chomp(my $key = <DATA>)) {
    chomp(my $val = <DATA>);
    $hash{$key} = $val;
}

散列条目的内存开销将取决于体系结构(32对64位),但对于散列本身应该是几百字节的量级,然后每个键和值大约30-60字节,加上键和值数据类型的开销。您可以使用Devel::Size自行检查。还read this

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

136 for hash

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

对于您指定的一百万个条目,

181MB。