Windows 7中的文件系统缓存有什么作用?


16

诊断为什么Git是如此缓慢的文章中有这样有趣的项目:

启用文件系统缓存

Windows的文件系统层与Linux固有地不同(针对Linux优化了Git的文件系统访问)。作为解决方法,Windows的Git提供了一个文件系统缓存,在最初的“热身”之后,它可以在许多情况下加速操作。您可以激活每个存储库的文件系统缓存:

git config core.fscache true

如果我在Git中启用了此选项,实际会发生什么变化?Windows 7中的文件系统缓存是什么样子,以及正在缓存什么?“初始热身”意味着什么?

Answers:


10

内容如下git config --help

core.fscache
为某些操作启用文件系统数据的其他缓存。

Windows的Git使用它来批量读取和缓存整个目录的lstat数据(而不是逐个文件地执行lstat)。

git只会执行一个请求来获取目录中所有文件的信息,而不是执行许多文件系统请求。

可以在引入的commit中找到更多技术描述fscache
Win32:在mingw的lstat和dirent实现下面添加一个缓存

由于缓慢的lstat仿真(在git中为索引中的每个文件调用一次lstat),因此在Windows上检查工作树状态的速度相当慢。Windows操作系统API在扫描整个目录的状态方面似乎比检查单个文件好得多。

添加一个使用lstat数据缓存的lstat实现。缓存未命中会读取整个父目录并将其添加到缓存中。对同一目录的后续lstat调用直接从缓存中提供。

还要实现opendir / readdir / closedir,以便它们在缓存中创建和使用目录列表。

缓存不会跟踪文件系统的更改,也不会插入任何修改文件的API,因此必须为不修改工作副本的git函数显式启用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.