Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial hg状态第一次变慢_Mercurial_Tortoisehg - Fatal编程技术网

Mercurial hg状态第一次变慢

Mercurial hg状态第一次变慢,mercurial,tortoisehg,Mercurial,Tortoisehg,有人知道为什么在windows客户机上第一次从命令行调用时,hg status速度很慢(3-10秒)(我假设之后它会被缓存) hg status是一项本地操作,不应该花那么长时间,尤其是在回购协议为空的情况下 无论是有几处更改的活动存储库,还是没有文件的全新回购,都是如此。因此,回购规模似乎不是影响业绩的因素。 谢谢 运行hg status命令时,Mercurial必须扫描存储库中的几乎每个目录和文件,以便显示文件状态。Hg必须对每个托管文件执行至少一次代价高昂的系统调用,以确定自上次Mercu

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

hg status
是一项本地操作,不应该花那么长时间,尤其是在回购协议为空的情况下

无论是有几处更改的活动存储库,还是没有文件的全新回购,都是如此。因此,回购规模似乎不是影响业绩的因素。
谢谢

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

我认为后续调用
hg st
的速度更快的原因是操作系统保留了所有最近访问的文件的缓存信息,如果文件没有被修改,就避免了磁盘访问。有时,文件本身甚至可能保留操作系统映射的内存,或者完全缓存在HDD缓冲区中


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

这是在windows上吗?你能看看你是否有同样的使用命令行的经验吗?是的。运行windows&我正在使用命令行。也许使用hg--profile可以提供一些有用的提示。您能更清楚地说明“第一次”吗?安装hg后的第一次?重启后第一次?第一次在每个新的cmd窗口中?在任何一次回购中,第一次是两个“-”,而不是一个。像
hg--profile status
谢谢!这就是答案!然而,这意味着一个空的(或非常小的)repo应该非常快,这在我所见过的所有情况下都不是真的。是的,因为即使repo很小(或是空的!),操作系统仍然需要加载和缓存Hg及其所有依赖项(例如Python运行时)