VeZ*_*oul 0 perl performance file
我有2个(大)文件.第一个是大约20万行,第二个是大约3000万行.
我想使用Perl检查第一行中的每一行是否在第二行中.将第一行中的每一行直接与第二行中的每一行进行比较是否更快,或者将它们全部存储在两个不同的数组中然后操作数组更好?
你有文件A和文件B.你想检查文件A中的行是否出现在文件B中.
如果你有足够的内存来保存文件B的内容,每行使用一个条目,那么这是最简单的.前进.
但是,如果不这样做,我建议您将这两个文件放在SQL数据库的表中.SQLite可能就足够了.然后,您的问题简化为简单JOIN.如果行长度是个问题,请使用快速哈希,例如xxHash.如果实现正确,64位版本在64位计算机上速度非常快,特别是如果您在Perl中启用了优化.存储两列,哈希和实际行.如果哈希匹配,请检查线是否匹配.确保在哈希列上建立索引.
你说:
事实上,我的文件是:文件A:名称编号(每行)文件B:名称日期位置编号(每行)我必须检查文件B是否包含与文件A的数据匹配的行(忽略日期和位置为例子)所以它不完全匹配......
在那种情况下,你被设定.你甚至不必担心哈希的东西(我将在这里留下参考).在SQLite数据库的不同列中放置您需要匹配的有趣数据.写一个连接.......利润
或者,您可以使用BerkeleyDB,它可以让您在将表存储在磁盘上时具有内存哈希的概念简单性.如果您有多个要匹配的属性,则无法很好地扩展.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |