使用Boyer-Moore算法(并且展开它的内层循环)。
- 使用原生系统调用来建立你的缓冲输入,避免在搜索之前拷贝输入字节。(无论如何,最好使用缓冲输出,因为在grep的常用场景中,输出的要比输入的少,所以输出缓冲拷贝的开销要小,并且可以节省许多这样小的无缓冲写操作。)
- 在找到一个匹配之前,不要查找换行符。
- 尝试做一些设置(比如页面对齐缓冲区,按页大小来读取块,选择性的使用mmap),这样可以使内核避免拷贝字节。
让程序变得更快的关键就是让它们做更少的事情。;-)
Read full article from 为什么GNU grep如此之快? - 博客 - 伯乐在线
No comments:
Post a Comment