Perché Emacs impiega più tempo ad avviarsi su Windows che su Linux?


14

Configurazione:

  • Un sistema
  • Sistema operativo Windows 10 come doppio avvio
  • Sistema operativo Ubuntu 15.10 come doppio avvio
  • Emacs 25.0.1 con GUI

Ho un dot-emacsfile e tutto nella mia .emacs.dcartella (anche i pacchetti si trovano in .emacs.d). Tutti questi file si trovano in una cartella Dropbox.

Su Windows 10: ho collegato simbolicamente la dot-emacse .emacs.ddalla cartella principale di Windows alle posizioni in Dropbox.

Su Linux / Ubuntu 15.10: ho anche collegato simbolicamente la dot-emacse .emacs.ddalla mia cartella home di Ubuntu (/ home / user / alle posizioni in Dropbox.

Quindi tutti i file relativi a Emacs sono archiviati in una cartella Dropbox su vari sistemi operativi.

Windows e Linux funzionano come dual boot sullo stesso disco, quindi anche lo stesso hardware.

Quando avvio Emacs su Windows, sono necessari 7,4 secondi per l'avvio.

Quando avvio Emacs su Linux, ci vogliono solo 2,3 secondi per avviarsi.

Questo è entrambi con Emacs con GUI grafica e versione 25.0.1. Entrambi i sistemi operativi si trovano sullo stesso computer sulla stessa unità SSD. Quindi è anche lo stesso hardware.

Le seguenti cose sono identiche sul sistema operativo (Windows 10 e Ubuntu 15.10):

  • Software Emacs, versione 25.0.1
  • File di configurazione (.emacs.d)
  • Un disco rigido (tutti i file all'interno di `.emacs.d) ed entrambi i sistemi operativi si trovano sullo stesso SSD).
  • Hardware

Una differenza:

  • Emacs compilato per Windows o Linux è in esecuzione su piattaforma Windows o Linux rispettivamente. Questa è l'unica differenza.

Faccio fatica a capire perché Emacs ha notevolmente più brevi tempi di avvio su Ubuntu rispetto a Windows.


2
Hai dimenticato di menzionare di cosa si tratta. Inoltre, dovresti confrontare i tempi di avvio di una sessione di Emacs nuda con emacs -Q.
Wasamasa,

Ho bisogno (message emacs-init-time)di misurare il tempo di avvio. Questo non è limitato a una funzione per quanto ne so. Quindi come potrei misurarlo con emacs -Qallora?
ReneFroger,

1
M-x emacs-init-time RET
giordano,

1
Vedo anche questo problema .. il mio emacs impiega 5-6 secondi per avviarsi su Linux, ma fino a un minuto su Windows. Per fortuna, Windows non è il mio sistema operativo principale al lavoro.
Kaushal Modi,

1
È perché credo GCC. Windows Emacs è compilato in GCC, il che non è eccezionale in Windows, ci sono molti bug e così via. Se c'è un modo per compilare EMACS con Visual C ++, mi piacerebbe vedere le prestazioni.
João Paulo Andrade,

Risposte:


21

Op-ed: Windows è solo lento.

Uso regolarmente Emacs su Windows (Cygwin e nativi) e GNU / Linux (Arch), e ho notato anche questo. Credo che la risposta sia che Linux è semplicemente più veloce di Windows in molte aree, in particolare nelle operazioni del file system 1 e nelle operazioni di threading / fork 2 .

Penso che la differenza nelle prestazioni sia evidentemente esemplificata quando si usa git, e specialmente Magit (dato che esegue parecchi comandi per il suo buffer di stato). Git è terribilmente lento su Windows. È così lento, infatti, che spesso modifico il codice su Windows nella mia cartella Dropbox, aspetto che venga sincronizzato con il mio VPS Linux, quindi uso Magit tramite SSH, invece di utilizzarlo semplicemente su Windows.

Fare time git statussul ramo principale di Emacs richiede in media 0,025 secondi su Arch per me. Su Windows (nativo), sono necessari 0,075-0,100 secondi, Windows (cygwin) 0,200 secondi. Potrebbe non sembrare molto, ma ciò significa che è 3-4 volte più lento su Windows.

Devo anche notare che alcuni software antivirus (McAfee, in particolare) possono causare forti rallentamenti. Con McAfee On-Access Scanner abilitato, le cose sono notevolmente più lente per me. Cygwin's git statuspuò richiedere fino a 2 minuti! Solo dopo averlo spento ottengo i tempi sopra indicati.


A parte: ho appena trovato la variabile magit-refresh-verbose, che a volte aggiorna lo stato. Ecco alcune volte per un aggiornamento del magit-statusbuffer sul ramo master di Emacs:

Windows (nativo)

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, hardware peggiore, 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)

La maggiore velocità di Cygwin mi ha sorpreso.

  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


Hai provato ad aggiungere il percorso per i comandi relativi a Git exec-path? ( stackoverflow.com/questions/16884377/… ) Nel mio caso ha migliorato notevolmente la velocità.
joon

1
@joon Sì, tutti i percorsi rilevanti sono già nel mio exec-path.
tata

Vedo - dovrei testarlo anche in una scatola di Linux. Grazie!
Joon,

@joon Nessun problema. Se trovi un modo per accelerare questo su Windows, per favore fatemelo sapere. È davvero un dolore.
tata

1
Ma la domanda rimane ancora .. anche senza Git, perché Emacs è notevolmente più lento su Windows?
ReneFroger,

0

Forse puoi provare a configurare emacs-server in modo da poter avere un'esperienza migliore. Usando questo approccio o eseguendo emacs come demone puoi semplicemente usare emacsclient per avviare nuove finestre senza caricare un'altra istanza di emacs. È un approccio simpatico. Non l'ho testato su Windows ma qui c'è un link che spiega come usarlo. Spero che ti aiuti amico.

Emacs Server

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.