hg状态第一次很慢

Ash*_*Ash 3 mercurial tortoisehg

有人知道为什么hg status在Windows客户端上第一次从命令行调用时速度很慢(3-10秒)(我假设它在之后被缓存).

hg status 是一个本地操作,它不应该花那么长时间,特别是空的回购.

在具有多个更改的活动存储库和没有文件的全新存储库中都是这种情况.因此,回购的大小似乎不是性能的一个因素.谢谢!

Jul*_*rgé 7

运行该hg status命令时,Mercurial必须扫描存储库中的几乎每个目录和文件,以便它可以显示文件状态.Hg必须为每个托管文件执行至少一个昂贵的系统调用,以确定自上次Mercurial检查以来它是否已更改,这是无法避免的.

我相信后续调用hg st更快的原因是操作系统保留了所有最近访问过的文件的缓存信息 - 如果文件没有被修改则保留磁盘访问 - .有时文件本身甚至可能由OS保留内存映射,或者在HDD缓冲区上完全缓存.

编辑:另外,如果你有一段时间没有调用hg,操作系统将需要从磁盘读取hg可执行文件及其依赖项,因为它们可能尚未缓存在RAM上.