有人知道为什么hg status
在Windows客户端上第一次从命令行调用时速度慢(3-10秒)(我假设它在之后被缓存)。
hg status
是一个本地操作,它不应该花那么长时间,特别是空的回购。
在具有多个更改的活动存储库和没有文件的全新存储库中都是这种情况。因此,回购的大小似乎不是性能的一个因素。 谢谢!
答案 0 :(得分:7)
当您运行hg status
命令时,Mercurial必须扫描存储库中的几乎所有目录和文件,以便它可以显示文件状态。 Hg必须为每个托管文件执行至少一个昂贵的系统调用,以确定自上次Mercurial检查后它是否已更改,这是无法避免的。
我认为后续调用hg st
的原因更快是因为操作系统保留了所有最近访问过的文件的缓存信息 - 如果文件未被修改则保留磁盘访问权限 - 。有时文件本身甚至可能由操作系统保留内存映射,或者在HDD缓冲区中完全缓存。
编辑:另外,如果你有一段时间没有调用hg,操作系统需要从磁盘读取hg可执行文件及其依赖项,因为它们可能不会缓存在RAM上。