Answers:
并非grep如此,但是文件系统本身经常缓存最近读取的数据,由于grep可以在内存而不是磁盘中进行有效搜索,因此导致以后的运行速度更快。
Linux和* NIX系统利用位于文件系统(通过VFS进行抽象)和用户级进程之间的各种缓存。因此,它不是grep,也不是文件系统在进行缓存-它是操作系统。
负责您的grep性能的缓存是VFS缓冲区缓存。其他缓存用于inode和目录,但是这些缓存在这里不起作用。
有关更多信息,请参见:Linux文档项目:9.2虚拟文件系统http://tldp.org/LDP/tlk/fs/filesystem.html
/usr/include
我的系统上花了〜16.4秒,所有缓存均被删除。缓存所有内容后,大约需要0.3秒。如果仅丢弃页面高速缓存(用于保存缓冲区高速缓存),则大约需要14.3秒。如果我离开页面缓存并删除dentry / inode缓存,则大约需要12秒。
如果您正在寻找grep的缓存版本,请查看https://stackoverflow.com/questions/7734596/grep-but-indexable