Hej敏锐的头脑!
我需要将文本文件加载到哈希中。一行是键,下一行是值。并且重复了数百万次。有什么建议如何以最好的方式做到这一点?
如果我们说密钥是15个字符且值是50个字符,哈希表需要多少内存?
由于
答案 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。