有一个 1 GB 的任意数据字符串,您可以假设它相当于:
1_gb_string=os.urandom(1*gigabyte)
我们将在这个字符串中搜索1_gb_string
无限数量的固定宽度、1 KB 模式1_kb_pattern
。每次我们搜索的模式都会不同。所以缓存机会并不明显。将一遍又一遍地搜索相同的 1 GB 字符串。这是一个简单的生成器来描述正在发生的事情:
def findit(1_gb_string):
1_kb_pattern=get_next_pattern()
yield 1_gb_string.find(1_kb_pattern)
请注意,只需要找到模式的第一次出现。之后,不应进行其他主要处理。
我可以使用什么比 python 的 bultin find 更快地匹配 1KB 模式与 1GB 或更大的数据字符串?
(我已经知道如何拆分字符串并并行搜索,因此您可以忽略基本优化。)
更新:请将内存要求限制为 16GB。