grep 使用缓存来加速搜索吗?

grep 使用缓存来加速搜索吗?

我注意到随后的运行grep在同一查询(以及不同的查询,但在同一文件上)上比第一次运行要快得多(在搜索大​​文件时效果很容易注意到)。

这表明 grep 使用了某种用于搜索的结构缓存,但我在互联网上找不到参考。

什么机制可以grep在后续搜索中更快地返回结果?

答案1

不是 grep 本身,而是文件系统本身经常缓存最近读取的数据,导致以后的运行速度更快,因为 grep 有效地在内存而不是磁盘中搜索。

答案2

Linux 和 *NIX 系统利用位于文件系统(通过 VFS 抽象)和用户级进程之间的各种缓存。所以它不是 grep,也不是文件系统进行缓存——而是操作系统。

负责 grep 性能的缓存是 VFS 缓冲区缓存。其他缓存用于索引节点和目录,但这些缓存在这里不会发挥作用。

有关更多信息,请参阅:Linux 文档项目:9.2 虚拟文件系统http://tldp.org/LDP/tlk/fs/filesystem.html

答案3

如果你寻找 grep 的缓存版本,查看https://stackoverflow.com/questions/7734596/grep-but-indexable

相关内容