有谁知道为什么 hg status
在第一次从 Windows 客户端上的命令行调用时很慢(3-10 秒)(我假设它在那之后被缓存)。hg status
是一个本地操作,它不应该花那么长时间,尤其是对于空仓库。
有多个更改的事件存储库和没有文件的全新存储库都是这种情况。因此,repo 的大小似乎不是影响性能的因素。
谢谢!
最佳答案
当您运行 hg status
命令时,Mercurial 必须扫描您存储库中的几乎每个目录和文件,以便它可以显示文件状态。 Hg 必须为每个托管文件至少执行一次昂贵的系统调用,以确定自 Mercurial 上次检查以来它是否已更改,这是无法避免的。
我相信对 hg st
的后续调用更快的原因是操作系统保留了有关所有最近访问的文件的缓存信息——如果文件未被修改,则避免磁盘访问。有时文件本身甚至可能保留由操作系统映射的内存或完全缓存在 HDD 缓冲区上。
编辑:另外,如果您有一段时间没有调用 hg,操作系统将需要从磁盘读取 hg 可执行文件及其依赖项,因为它们可能尚未缓存在 RAM 上。
关于mercurial - hg 状态第一次很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3558427/