我有一个包含200.000个文件的项目,我注意到git status第一次运行需要2.0秒,但是第二次运行需要0.03秒,Git是如何加快第二次运行的呢?如果我们只考虑file size和mtime,那么第二次运行时使用什么快捷方式呢?据我所知,Git仍然需要评估文件大小和mtime来了解哪些文件被修改了,不是吗?
git status
file size
mtime
uurity8g1#
我猜区别是因为操作系统缓存,而不是Git缓存。第一次运行git status时,每个目录都必须从磁盘读取,即使在SSD磁盘上也很慢。但随后操作系统缓存所有目录,所以下次它从内存中的缓存返回数据时,快得多。一段时间后该高速缓存将过期或被其他OS需要(其他缓冲区和缓存)覆盖,git status将再次运行得更慢。
1条答案
按热度按时间uurity8g1#
我猜区别是因为操作系统缓存,而不是Git缓存。第一次运行
git status
时,每个目录都必须从磁盘读取,即使在SSD磁盘上也很慢。但随后操作系统缓存所有目录,所以下次它从内存中的缓存返回数据时,快得多。一段时间后该高速缓存将过期或被其他OS需要(其他缓冲区和缓存)覆盖,git status
将再次运行得更慢。