¿Por qué Emacs tarda más en iniciarse en Windows que en Linux?

14

Configuración:

  • Un sistema
  • OS Windows 10 como arranque dual
  • Sistema operativo Ubuntu 15.10 como arranque dual
  • Emacs 25.0.1 con GUI

Tengo un dot-emacsarchivo y todo en mi .emacs.dcarpeta (los paquetes también se encuentran en .emacs.d). Todos estos archivos se encuentran en una carpeta de Dropbox.

En Windows 10: hice un enlace simbólico desde dot-emacsy .emacs.ddesde la carpeta de inicio en Windows a las ubicaciones en Dropbox.

En Linux / Ubuntu 15.10: también hice un enlace simbólico desde dot-emacsy .emacs.ddesde mi carpeta de inicio de Ubuntu (/ home / user /) a las ubicaciones en Dropbox.

Por lo tanto, todos los archivos relacionados con Emacs se almacenan en una carpeta de Dropbox en varios sistemas operativos.

Windows y Linux se ejecutan como arranque dual en el mismo disco, también el mismo hardware.

Cuando inicio Emacs en Windows, tarda 7.4 segundos en iniciarse.

Cuando inicio Emacs en Linux, solo toma 2.3 segundos para comenzar.

Esto es tanto con Emacs con GUI gráfica como con la versión 25.0.1. Ambos sistemas operativos están ubicados en la misma computadora en la misma unidad SSD. Entonces también es el mismo hardware.

Las siguientes cosas son idénticas en el sistema operativo (Windows 10 y Ubuntu 15.10):

  • Software Emacs, versión 25.0.1
  • Archivos de configuración (.emacs.d)
  • Un disco duro (todos los archivos dentro de `.emacs.d) y ambos SO están en el mismo SSD).
  • Hardware

Una diferencia:

  • Emacs compilado para Windows o Linux se ejecuta en la plataforma Windows o Linux respectivamente. Esa es la única diferencia.

Me cuesta entender por qué Emacs tiene un tiempo de inicio notablemente más corto en Ubuntu que en Windows.

ReneFroger
fuente
2
Olvidaste mencionar qué compilación es esta. Además, debe comparar los tiempos de inicio de una sesión de Emacs simple con emacs -Q.
wasamasa
Necesito el (message emacs-init-time)para medir el tiempo de inicio. Por lo que sé, esto no está limitado a una función. Entonces, ¿cómo podría medirlo emacs -Qentonces?
ReneFroger
1
M-x emacs-init-time RET
giordano
1
También veo este problema ... mi emacs tarda 5-6 segundos en iniciarse en Linux, pero hasta un minuto en Windows. Afortunadamente, Windows no es mi sistema operativo principal en el trabajo.
Kaushal Modi
1
Es porque GCC supongo. Windows Emacs está compilado en GCC, lo que no es bueno en Windows, hay muchos errores, etc. Si hay una manera de compilar EMACS con C ++ visual, me gustaría ver el rendimiento.
João Paulo Andrade

Respuestas:

21

Artículo de opinión: Windows es lento.

Regularmente uso Emacs tanto en Windows (Cygwin y nativo) como en GNU / Linux (Arch), y también lo he notado. Creo que la respuesta es que Linux es simplemente más rápido que Windows en muchas áreas, especialmente en las operaciones del sistema de archivos 1 y las operaciones de subprocesamiento / bifurcación 2 .

Creo que la diferencia en el rendimiento se ejemplifica más notablemente cuando se usa git, y especialmente Magit (ya que ejecuta bastantes comandos para su búfer de estado). Git es terriblemente lento en Windows. Es tan lento, de hecho, que a menudo edito código en Windows en mi carpeta de Dropbox, espero a que se sincronice con mi VPS de Linux, y luego uso Magit a través de SSH, en lugar de simplemente usarlo en Windows.

Hacerlo time git statusen la rama maestra de Emacs toma un promedio de 0.025 segundos en Arch para mí. En Windows (nativo), lleva 0.075-0.100 segundos, Windows (cygwin) 0.200 segundos. Puede que no parezca mucho, pero eso significa que es 3-4x más lento en Windows.

También debo tener en cuenta que cierto software antivirus (McAfee, en particular) puede causar ralentizaciones masivas. Con el escáner en acceso de McAfee habilitado, las cosas son mucho más lentas para mí. ¡Cygwin's git statuspuede tomar hasta 2 minutos! Solo después de apagarlo obtengo los tiempos que indiqué anteriormente.


Aparte: acabo de encontrar la variable magit-refresh-verbose, que veces el estado se actualiza. Aquí hay algunas ocasiones para actualizar el magit-statusbúfer en la rama maestra de 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, peor hardware, 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 velocidad más rápida de Cygwin me sorprendió.

  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

niñera
fuente
¿Has intentado agregar la ruta para los comandos relacionados con git exec-path? ( stackoverflow.com/questions/16884377/… ) En mi caso, mejoró significativamente la velocidad.
Joon
1
@joon Sí, todas las rutas relevantes ya están en mi exec-path.
niñera
Ya veo, también debería probar esto en una caja de Linux. ¡Gracias!
Joon
@joon No hay problema. Si encuentra una manera de acelerar esto en Windows, hágamelo saber. Es realmente un dolor.
niñera
1
Pero la pregunta sigue en pie ... incluso sin Git, ¿por qué Emacs es notablemente más lento en Windows?
ReneFroger
0

Quizás pueda intentar configurar el servidor emacs para que pueda tener una mejor experiencia. Usando este enfoque o ejecutando emacs como demonio, puede usar emacsclient para iniciar nuevas ventanas sin cargar otra instancia de emacs. Es un buen enfoque. No lo he probado en Windows, pero aquí hay un enlace que explica cómo usarlo. Espero que te ayude, hombre.

Servidor Emacs

Sebas
fuente