Чому Emacs запускається більше часу, ніж для Windows?


14

Конфігурація:

  • Одна система
  • ОС Windows 10 як подвійне завантаження
  • ОС Ubuntu 15.10 як подвійне завантаження
  • Emacs 25.0.1 з графічним інтерфейсом

У мене є один dot-emacsфайл і все в моїй .emacs.dпапці (пакунки також знаходяться в .emacs.d). Усі ці файли знаходяться в одній папці Dropbox.

У Windows 10: я посилався на домашню папку dot-emacsта .emacs.dз домашньої папки в Windows на місця в Dropbox.

У Linux / Ubuntu 15.10: я також посилався на dot-emacsта .emacs.dз моєї домашньої папки Ubuntu (/ home / user /) до пунктів Dropbox.

Отже всі файли, пов'язані з Emacs, зберігаються в одній папці Dropbox в різних операційних системах.

Windows і Linux працюють на двох дисках як подвійне завантаження, так і одне обладнання.

Коли я запускаю Emacs в Windows, для запуску потрібно 7,4 секунди.

Коли я запускаю Emacs на Linux, для запуску потрібно лише 2,3 секунди.

Це і з Emacs з графічним графічним інтерфейсом, і з версією 25.0.1. Обидві операційні системи розташовані на одному комп'ютері на одному SSD-диску. Так що це теж саме обладнання.

У операційній системі (Windows 10 та Ubuntu 15.10) ідентичні наступні речі:

  • Програмне забезпечення Emacs, версія 25.0.1
  • Файли конфігурації (.emacs.d)
  • Один жорсткий диск (усі файли всередині `.emacs.d) і обидва ОС''і на одній SSD).
  • Обладнання

Одна різниця:

  • Компільований Emacs для Windows або Linux працює відповідно на платформі Windows або Linux. Це єдина різниця.

Я намагаюся зрозуміти, чому Emacs помітно коротший час запуску Ubuntu, ніж Windows.


2
Ви забули згадати, що це за побудова. Крім того, вам слід порівнювати час запуску голого сеансу Emacs з emacs -Q.
wasamasa

Мені потрібно, (message emacs-init-time)щоб виміряти час запуску. Наскільки я знаю, це не обмежується функцією. То як я міг це виміряти з emacs -Qтоді?
ReneFroger

1
M-x emacs-init-time RET
giordano

1
Я також бачу цю проблему .. моїй emacs потрібно 5-6 секунд для запуску в Linux, але до хвилини в Windows. На щастя, Windows не є моєю основною ОС на роботі.
Каушал Моді

1
Це тому, що GCC я здогадуюсь. Windows Emacs компілюється в GCC, що не чудово у Windows, там багато помилок тощо. Якщо є спосіб скласти EMACS з візуальним C ++, я хотів би побачити виставу.
Жоао Пауло Андраде

Відповіді:


21

Op-ed: Windows просто повільний.

Я регулярно використовую Emacs і в Windows (Cygwin і рідний), і в GNU / Linux (Arch), і це також помітив. Я вважаю, що відповідь полягає в тому, що Linux є просто швидшим, ніж Windows у багатьох областях, особливо це стосується операцій з файловою системою 1 та операцій з нарізанням / форсуванням 2 .

Я думаю, що різниця у продуктивності найбільш помітна при використанні git, і особливо Magit (оскільки він виконує досить багато команд для свого буфера статусу). Git жахливо повільний у Windows. Насправді це так повільно, що я часто редагую код у Windows у своїй папці Dropbox, чекаю, коли він синхронізується з моєю Linux VPS, а потім використовую Magit через SSH, а не просто використовую його в Windows.

Робота time git statusна головній гілці Emacs займає в середньому 0,025 секунди для Arch. У Windows (рідній) потрібно 0,075-0,100 секунд, у Windows (cygwin) 0,200 секунди. Це може здатися не дуже, але це означає, що це на 3-4 рази повільніше в Windows.

Слід також зазначити, що певне антивірусне програмне забезпечення (зокрема, McAfee) може спричинити масові уповільнення. Якщо ввімкнено сканер доступу до McAfee, для мене все помітно повільніше. Cygwin git statusможе зайняти до 2 хвилин! Тільки після відключення я отримую час, про який я говорив вище.


Убік: Я щойно знайшов змінну magit-refresh-verbose, яка разів оновлює статус. Ось кілька разів для оновлення magit-statusбуфера в головній гілці Emacs:

Windows (рідний)

GNU Emacs 24.5.1 (i686-pc-mingw32) of 2015-04-11 on LEG570
Magit 20151028.1649, Git 2.6.1.windows.1, Emacs 24.5.1
Refreshing buffer `*magit: emacs'...done (9.317s)
Refreshing buffer `*magit: emacs'...done (9.318s)
Refreshing buffer `*magit: emacs'...done (9.357s)

Windows (cygwin)

GNU Emacs 25.0.50.1 (i686-pc-cygwin) of 2015-07-29 on NAND-LT
Magit 20151015.22, Git 2.5.0.234.gefc8a62, Emacs 25.0.50.1
Refreshing buffer `*magit: emacs'...done (4.609s)
Refreshing buffer `*magit: emacs'...done (4.720s)
Refreshing buffer `*magit: emacs'...done (4.626s)

GNU / Linux (Arch, гірше обладнання, VPS)

GNU Emacs 25.0.50.6 (x86_64-unknown-linux-gnu, GTK+ Version 3.18.2) of 2015-10-26
Magit 20151028.1649, Git 2.6.2, Emacs 25.0.50
Refreshing buffer ‘*magit: emacs’...done (0.517s)
Refreshing buffer ‘*magit: emacs’...done (0.507s)
Refreshing buffer ‘*magit: emacs’...done (0.523s)

Більша швидкість Кігвіна здивувала мене.

  1. http://www.slideshare.net/PrincipledTechnologies/comparing-file-system-performance-red-hat-enterprise-linux-6-vs-microsoft-windows-server-2012

  2. /programming/12878980/speed-performance-of-a-qt-program-windows-vs-linux


Ви намагалися додати шлях до команд, пов'язаних з git exec-path? ( stackoverflow.com/questions/16884377/… ) У моєму випадку це значно покращило швидкість.
Joon

1
@joon Так, всі відповідні шляхи вже в моєму exec-path.
няня

Я бачу - я повинен також перевірити це у вікні linux. Спасибі!
юний

@joon Немає проблем. Якщо ви знайдете спосіб прискорити це в Windows, будь ласка, повідомте мене про це. Це справді біль.
няня

1
Але питання все ще стоїть .. навіть без Git, чому Emacs помітно повільніше в Windows?
ReneFroger

0

Можливо, ви можете спробувати встановити emacs-сервер, щоб ви мали кращий досвід. Використовуючи цей підхід або запускаючи emacs як демон, ви можете просто використовувати emacsclient для запуску нових вікон, не завантажуючи інший екземпляр emacs. Це приємний підхід. Я не тестував його в Windows, але ось посилання, що пояснює, як ним користуватися. Сподіваюся, це допоможе тобі людині.

Сервер Emacs

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.