'git status'是如何缓存workdir信息的,下次又是如何使用的?

cnh2zyt3  于 2023-01-28  发布在  Git
关注(0)|答案(1)|浏览(100)

我有一个包含200.000个文件的项目,我注意到git status第一次运行需要2.0秒,但是第二次运行需要0.03秒,Git是如何加快第二次运行的呢?
如果我们只考虑file sizemtime,那么第二次运行时使用什么快捷方式呢?据我所知,Git仍然需要评估文件大小和mtime来了解哪些文件被修改了,不是吗?

uurity8g

uurity8g1#

我猜区别是因为操作系统缓存,而不是Git缓存。第一次运行git status时,每个目录都必须从磁盘读取,即使在SSD磁盘上也很慢。但随后操作系统缓存所有目录,所以下次它从内存中的缓存返回数据时,快得多。一段时间后该高速缓存将过期或被其他OS需要(其他缓冲区和缓存)覆盖,git status将再次运行得更慢。

相关问题