HG статус медленный в первый раз

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам