在大文件中搜索4-5个字节的序列

时间:2012-03-22 04:27:32

标签: performance file search language-agnostic indexing

我有1.5GB的文件 我需要在这个文件中找到30亿个字节序列。一个序列可以是4或5个字节。 找到第一个位置,或者确保文件中的这样一个序列没有。 怎么做得最快?

计算机的RAM限制 - 4GB

3 个答案:

答案 0 :(得分:1)

使用grep。它经过高度优化,可以在大文件中查找内容 如果这不是一个选项,请阅读它使用的Boyer-Moore algorithm并自行实现。要重现相同的速度grep,需要进行大量的调整。

答案 1 :(得分:0)

使用预处理。

我认为你应该创建一个Index,运行文件,记录每个唯一的4字节序列的第一个实例。将4字节序列和第一个出现位置存储在不同的文件中,按字节序列排序。

在索引文件上使用简单的二进制搜索可以有效地找到序列。

你可以更聪明,并使用散列将搜索减少到O(1)。

答案 2 :(得分:0)

查看Searchlight搜索引擎。

该程序允许将多达10个ASCII字节的多个序列存储在单个文件中。然后,您将其指向文件,目录,文件名文件,目录名文件,文件名的arraylist或目录名称的arraylist,然后就可以了!

此外,它报告找到的每个序列的文件字节位置/偏移量。