HG статус медленный в первый раз - PullRequest
3 голосов
/ 24 августа 2010

Кто-нибудь знает, почему hg status работает медленно (3-10 секунд) при первом вызове из командной строки на Windows-клиенте (я предполагаю, что он кешируется после этого).

hg status - локальная операция, и она не должна занимать так много времени, особенно с пустыми репозиториями.

Это относится как к активному репозиторию с несколькими изменениями, так и к новому репо без файлов.Таким образом, размер репо, похоже, не влияет на производительность.Спасибо!

1 Ответ

7 голосов
/ 25 августа 2010

Когда вы запускаете команду hg status, Mercurial должен сканировать почти все каталоги и файлы в вашем хранилище, чтобы отобразить состояние файла.Hg должен выполнить хотя бы один дорогостоящий системный вызов для каждого управляемого файла, чтобы определить, изменился ли он с момента последней проверки Mercurial, и этого нельзя избежать.из-за кэшированной информации операционная система сохраняет все недавно использованные файлы, что исключает доступ к диску, если файл не был изменен.Иногда сами файлы могут даже оставаться в памяти, отображаемой ОС или кэшироваться в буфере жесткого диска.

Редактировать: также, если вы не вызывали hg некоторое время, ОС должна будет прочитать исполняемый файл hgи его зависимости от диска, так как они могут быть уже не кэшированы в оперативной памяти.

...