Mengapa Emacs membutuhkan waktu lebih lama untuk memulai di Windows daripada di Linux?

14

Konfigurasi:

  • Satu sistem
  • OS Windows 10 sebagai dual boot
  • OS Ubuntu 15.10 sebagai dual boot
  • Emacs 25.0.1 dengan GUI

Saya punya satu dot-emacsfile dan semua yang ada di .emacs.dfolder saya (paket juga ada di .emacs.d). Semua file ini terletak di satu folder Dropbox.

Di Windows 10: Saya menghubungkan dot-emacsdan .emacs.ddari folder rumah di Windows ke lokasi di Dropbox.

Di Linux / Ubuntu 15.10: Saya juga menghubungkan dot-emacsdan .emacs.ddari folder beranda Ubuntu saya (/ home / user / ke lokasi di Dropbox.

Jadi semua file yang terkait dengan Emacs, disimpan dalam satu folder Dropbox di berbagai sistem operasi.

Windows dan Linux berjalan sebagai dual boot pada disk yang sama, demikian juga perangkat keras yang sama.

Ketika saya memulai Emacs pada Windows, dibutuhkan 7,4 detik untuk memulai.

Ketika saya memulai Emacs di Linux, hanya dibutuhkan 2,3 detik untuk memulai.

Ini sama dengan Emacs dengan GUI grafis dan versi 25.0.1. Kedua sistem operasi ini berada di komputer yang sama pada drive SSD yang sama. Jadi itu juga perangkat keras yang sama.

Hal-hal berikut identik pada sistem operasi (Windows 10 dan Ubuntu 15.10):

  • Perangkat lunak Emacs, versi 25.0.1
  • File konfigurasi (.emacs.d)
  • Satu harddisk (semua file di dalam `.emacs.d) dan kedua OS berada di SSD yang sama).
  • Perangkat keras

Satu perbedaan:

  • Emacs yang dikompilasi untuk Windows atau Linux masing-masing berjalan pada platform Windows atau Linux. Itulah satu-satunya perbedaan.

Saya berjuang untuk memahami mengapa Emacs memiliki waktu startup yang lebih singkat di Ubuntu daripada Windows.

ReneFroger
sumber
2
Anda lupa menyebutkan apa yang membangun ini. Anda juga harus membandingkan waktu startup dengan sesi Emacs kosong emacs -Q.
wasamasa
Saya perlu (message emacs-init-time)mengukur waktu startup. Sejauh ini saya tidak terikat dengan fungsi. Jadi bagaimana saya bisa mengukurnya emacs -Q?
ReneFroger
1
M-x emacs-init-time RET
giordano
1
Saya melihat masalah ini juga .. emacs saya membutuhkan 5-6 detik untuk memulai di Linux, tetapi hingga satu menit di Windows. Untungnya, Windows bukan OS utama saya di tempat kerja.
Kaushal Modi
1
Itu karena GCC kurasa. Windows Emacs dikompilasi dalam GCC, yang tidak bagus di windows, ada banyak bug dan sebagainya. Jika ada cara untuk mengkompilasi EMACS dengan visual C ++, saya ingin melihat kinerjanya.
João Paulo Andrade

Jawaban:

21

Op-ed: Windows lambat.

Saya secara teratur menggunakan Emacs pada Windows (Cygwin dan asli) dan GNU / Linux (Arch), dan saya perhatikan ini juga. Saya percaya jawabannya adalah bahwa Linux lebih cepat daripada Windows di banyak bidang, terutama dalam operasi sistem file 1 dan operasi threading / forking 2 .

Saya pikir perbedaan dalam kinerja paling nyata dicontohkan ketika menggunakan git, dan terutama Magit (karena menjalankan beberapa perintah untuk buffer statusnya). Git sangat lambat di Windows. Ini sangat lambat, pada kenyataannya, bahwa saya sering mengedit kode pada Windows di folder Dropbox saya, menunggu untuk disinkronkan ke VPS Linux saya, dan kemudian menggunakan Magit melalui SSH, daripada hanya menggunakannya di Windows.

Perbuatan time git status di cabang utama Emacs membutuhkan waktu rata-rata 0,025 detik di Arch untukku. Pada Windows (asli), dibutuhkan 0,075-0,100 detik, Windows (cygwin) 0,200 detik. Itu mungkin tidak terlalu banyak, tetapi itu berarti 3-4x lebih lambat pada Windows.

Saya juga harus mencatat bahwa perangkat lunak anti-virus tertentu (McAfee, khususnya) dapat menyebabkan perlambatan besar. Dengan On-Access Scanner McAfee diaktifkan, segalanya terasa lebih lambat bagi saya. Cygwin git statusbisa memakan waktu hingga 2 menit! Hanya setelah mematikannya saya mendapatkan waktu yang saya nyatakan di atas.


Di samping: Saya baru saja menemukan variabelnya magit-refresh-verbose, yang mana statusnya diperbarui. Berikut adalah beberapa waktu untuk penyegaranmagit-status buffer pada cabang utama Emacs:

Windows (asli)

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 (Lengkungan, perangkat keras yang lebih buruk, 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)

Kecepatan Cygwin yang lebih cepat mengejutkanku.

  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

pengasuh
sumber
Sudahkah Anda mencoba menambahkan path untuk perintah yang berhubungan dengan git exec-path? ( stackoverflow.com/questions/16884377/… ) Dalam kasus saya ini meningkatkan kecepatan secara signifikan.
joon
1
@Joon Ya, semua jalur yang relevan sudah ada di saya exec-path.
pengasuh
Saya melihat - saya harus menguji ini dalam kotak linux juga. Terima kasih!
joon
@ jooon Tidak masalah. Jika Anda menemukan cara untuk mempercepat ini di Windows, beri tahu saya. Benar-benar menyebalkan.
pengasuh
1
Tapi pertanyaannya tetap ada .. bahkan tanpa Git, mengapa Emacs jauh lebih lambat di Windows?
ReneFroger
0

Mungkin Anda dapat mencoba men-setup emacs-server sehingga Anda dapat memiliki pengalaman yang lebih baik. Dengan menggunakan pendekatan ini atau menjalankan emacs sebagai daemon, Anda bisa menggunakan emacsclient untuk memulai windows baru tanpa memuat instance emacs lainnya. Itu pendekatan yang bagus. Saya belum mengujinya di Windows, tetapi di sini ada tautan yang menjelaskan cara menggunakannya. Saya harap ini membantu Anda.

Server Emacs

Sebas
sumber