TortoiseHg медленный

В общем, то, что написано на жести: TortoiseHg медленный.

Недавно моя команда перешла с Subversion на Mercurial. (Частично, чтобы воспользоваться преимуществами Kiln для Code Reviews) Одна из вещей, которую мы заметили, это то, что взаимодействие с Mercurial через TortoiseHg болезненно медленное. Некоторые статистические данные:

  • Открытие TortoiseHg Workbench: 8 минут 13 секунд
  • Время отклика при нажатии на ревизию: 2,8 секунды
  • Время до "Refresh Current Repository": 6.4 секунды
  • Время проверки входящих изменений: 12.8 секунд

Все это приводит к тому, что приложение работает очень медленно. Для сравнения, вот время инструмента командной строки:

  • hg status: 4.573 секунды
  • hg incoming: 12.150 секунд

Время командной строки кажется совпадающим с временем рабочего стола, но рабочий стол делает задержку гораздо более удручающей, потому что она синхронна с использованием программы. Например, типичная задача - "получить последние материалы, которые только что выложил мой коллега". Это выглядит примерно так (перечисляется только время, потраченное на ожидание за компьютером, округленно):

  • Открыть TortoiseHg: 10 минут.
  • Открыть соответствующий репозиторий двойным щелчком в реестре репозиториев: 5 секунд.
  • Зафиксируйте локальные изменения, требующие фиксации:
    • Нажмите на "Working Directory": 5 секунд.
    • Выберите важные файлы и введите сообщение о фиксации.
    • Нажмите Commit: 20 секунд.
  • Получите изменения коллеги:
    • Проверьте входящие наборы изменений: 10 секунд.
    • Просмотреть их.
    • Принять входящие наборы изменений: 40 секунд.
  • Отложить неподготовленные изменения:
    • Открыть диалог шельмования: 2 секунды.
    • Шельмовать оставшиеся файлы: 6 минут
    • Обновить: 5 секунд.
  • Объединить:
    • Щелкните другую голову: 3 секунды.
    • Слияние с локальным:
    • Подождите проверки "Clean": 15 секунд.
    • Ожидание слияния (при условии отсутствия конфликтов): 10 секунд.
    • Выполнить: 30 секунд.
  • Снять изменения:
    • Открыть диалог Shelve: 2 секунды.
    • Снять изменения: 6 минут.
    • Обновить: 5 секунд.

Итого: 24 минуты, 32 секунды.

Двенадцать из этих минут уходят на то, чтобы поставить и снять полку. Десять - только на открытие. Одним из последствий этого является то, что люди склонны размещать материалы, в которых они не уверены, что они куда-то пойдут, только для того, чтобы избежать затрат на хранение. Но даже если вы предположите, что нет никаких затрат на полки и открытие (может быть, вы просто оставите их открытыми), все равно потребуется 2 с половиной минуты тщательного щелчка, чтобы получить последние вещи.

И это даже не считая более значительных вещей, таких как клонирование и тому подобное. Все так медленно.

У меня:

  • Отключен антивирус.
  • Отключил индексирование.
  • Перезагрузился.
  • Пробовал на 3 разных версиях windows.
  • Пробовал на разном оборудовании, в основном разумного качества: Core 2 Duo @3.16 GHz, 8Gb Ram.
  • Пробовал на 32 и 64 битных ОС.
  • Пробовал, отключившись от сети.

На самом деле репозиторий представляет собой два репозитория: основной репозиторий и подрепозиторий, который содержит все наши сторонние двоичные файлы. Папка .hg основного репозитория имеет размер 676 МБ. Папка .hg подрепо имеет размер 641 МБ. Содержимое папки default в основном репо составляет 7,05 ГБ. Содержимое папки default в подрепо составляет 642 МБ. Средний размер файла в основном репозитории - 563 КБ. Максимальный размер файла в основном репозитории - 170 МБ. В основном репозитории 13 438 файлов. Средний размер файла в подрепо - 23 КБ. Максимальный размер файла в подрепо - 132 МБ. В подрепо имеется 57087 файлов.

У меня включены расширения big-push, caseguard, fetch, gestalt, kbfiles, kiln, kilnauth, kilnpath, mq, purge и transplant.

Есть идеи, с чего начать, чтобы выяснить, как ускорить работу? Эта медлительность сводит нас с ума.

20
задан alficles 25 October 2011 в 14:49
поделиться