我想编写一个强力算法来尝试在图书馆中找到一本书。如果你找的那本书不存在,你需要多长时间才能解决问题? 任何智能蛮力方法?
我想在图书馆名称所在的列表中搜索图书的名称,并从列表中心开始?
答案 0 :(得分:0)
您应该阅读why GNU grep is fast上的这篇文章并尝试他的方法。总之,他说:
使用Boyer-Moore(并将其内循环展开几次)。
使用原始系统调用滚动您自己的无缓冲输入。避免复制 搜索之前的输入字节。 (但是,请使用缓冲 输出。正常的grep场景是输出量是 与输入量相比较小,因此输出的开销 缓冲区复制很小,同时由于避免了很多小的节省 无缓冲写入可能很大。)
在找到匹配项之前,请不要在输入中查找换行符。
尝试设置(页面对齐的缓冲区,页面大小的读取块, 可选地使用mmap)所以内核也可以避免复制字节。
快速制作节目的关键是让它们几乎不做任何事情。 ; - )
Grep完全按照你的意愿行事:强行搜索无序数据 - 他的算法很聪明,即使它是蛮力的。