我有一个 10GB 的文件,有 2 亿行。我需要获取该文件的唯一行。
My code:
while(<>) {
chomp;
$tmp{$_}=1;
}
#print...
我只有2GB内存。我怎么解决这个问题?
正如我对大卫的回答发表评论时,数据库是可行的方法,但一个好的数据库可能是DBM::Deep http://p3rl.org/DBM%3a%3aDeep因为它是纯 Perl 且易于安装和使用;它本质上是一个与文件相关的 Perl 哈希值。
use DBM::Deep;
tie my %lines, 'DBM::Deep', 'data.db';
while(<>) {
chomp;
$lines{$_}=1;
}
这基本上是您已经拥有的,但哈希现在是与文件(此处为 data.db)绑定的数据库,而不是保存在内存中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)