Por que o Emacs demora mais para iniciar no Windows do que no Linux?


14

Configuração:

  • Um sistema
  • SO Windows 10 como inicialização dupla
  • OS Ubuntu 15.10 como inicialização dupla
  • Emacs 25.0.1 com GUI

Eu tenho um dot-emacsarquivo e tudo na minha .emacs.dpasta (os pacotes também estão localizados .emacs.d). Todos esses arquivos estão localizados em uma pasta do Dropbox.

No Windows 10: I simbolicamente a dot-emacse .emacs.dda pasta base no Windows para os locais em Dropbox.

No Linux / Ubuntu 15.10: Também vinculei a dot-emacse .emacs.dda minha pasta inicial do Ubuntu (/ home / user / para os locais no Dropbox.

Portanto, todos os arquivos relacionados ao Emacs são armazenados em uma pasta do Dropbox em vários sistemas operacionais.

Windows e Linux estão sendo executados como inicialização dupla no mesmo disco, também com o mesmo hardware.

Quando inicio o Emacs no Windows, leva 7,4 segundos para iniciar.

Quando inicio o Emacs no Linux, leva apenas 2,3 segundos para iniciar.

Isso ocorre com o Emacs com GUI gráfica e a versão 25.0.1. Ambos os sistemas operacionais estão localizados no mesmo computador na mesma unidade SSD. Portanto, também é o mesmo hardware.

O seguinte é idêntico no sistema operacional (Windows 10 e Ubuntu 15.10):

  • Software Emacs, versão 25.0.1
  • Arquivos de configuração (.emacs.d)
  • Um disco rígido (todos os arquivos dentro de `.emacs.d) e os dois SOs estão no mesmo SSD).
  • Hardware

Uma diferença:

  • O Emacs compilado para Windows ou Linux está sendo executado na plataforma Windows ou Linux, respectivamente. Essa é a única diferença.

Estou lutando para entender por que o Emacs tem um tempo de inicialização visivelmente menor no Ubuntu do que no Windows.


2
Você esqueceu de mencionar o que é isso. Além disso, você deve comparar os horários de inicialização de uma sessão simples do Emacs emacs -Q.
Wasamasa 01/11/2015

Preciso (message emacs-init-time)medir o tempo de inicialização. Isso não está limitado a uma função, tanto quanto eu sei. Então, como eu poderia medir isso com emacs -Qisso?
ReneFroger #

1
M-x emacs-init-time RET
Giordano

1
Também vejo esse problema .. meu emacs leva de 5 a 6 segundos para iniciar no Linux, mas até um minuto no Windows. Felizmente, o Windows não é o meu sistema operacional principal no trabalho.
precisa

1
É porque o GCC, eu acho. O Windows Emacs é compilado no GCC, o que não é ótimo no Windows, há muitos bugs e assim por diante. Se houver uma maneira de compilar o EMACS com C ++ visual, eu gostaria de ver o desempenho.
João Paulo Andrade

Respostas:


21

Artigo: O Windows está lento.

Uso regularmente o Emacs no Windows (Cygwin e nativo) e no GNU / Linux (Arch), e notei isso também. Acredito que a resposta é que o Linux é muito mais rápido que o Windows em muitas áreas, principalmente nas operações do sistema de arquivos 1 e nas operações de rosqueamento / bifurcação 2 .

Eu acho que a diferença de desempenho é mais notavelmente exemplificada ao usar o git, e especialmente o Magit (já que ele executa alguns comandos para seu buffer de status). O Git é terrivelmente lento no Windows. Na verdade, é tão lento que eu frequentemente edito o código no Windows na minha pasta Dropbox, espero que seja sincronizado com o VPS do Linux e depois uso o Magit via SSH, em vez de simplesmente usá-lo no Windows.

Fazer time git statusno ramo mestre do Emacs leva em média 0,025 segundos no Arch para mim. No Windows (nativo), leva 0,075-0,100 segundos, Windows (cygwin) 0,200 segundos. Isso pode não parecer muito, mas significa que é 3-4x mais lento no Windows.

Devo também observar que certos softwares antivírus (McAfee, em particular) podem causar lentidão em massa. Com o On-Access Scanner da McAfee ativado, as coisas ficam notavelmente mais lentas para mim. O Cygwin's git statuspode levar até 2 minutos! Somente depois de desligá-lo é que obtenho o tempo indicado acima.


Além: Acabei de encontrar a variável magit-refresh-verbose, que vezes o status é atualizado. Aqui estão alguns momentos para uma atualização do magit-statusbuffer no ramo principal do 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, pior 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)

A velocidade mais rápida de Cygwin me surpreendeu.

  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


Você tentou adicionar o caminho para os comandos relacionados ao git exec-path? ( stackoverflow.com/questions/16884377/… ) No meu caso, melhorou significativamente a velocidade.
joon

1
@joon Sim, todos os caminhos relevantes já estão no meu exec-path.
Nanny

Entendo - eu deveria testar isso em uma caixa Linux também. Obrigado!
joon

@joon Não há problema. Se você encontrar uma maneira de acelerar isso no Windows, entre em contato. É realmente uma dor.
Babá5 /

1
Mas a questão ainda permanece ... mesmo sem o Git, por que o Emacs é notavelmente mais lento no Windows?
ReneFroger

0

Talvez você possa tentar configurar o emacs-server para ter uma experiência melhor. Usando essa abordagem ou executando o emacs como um daemon, você pode apenas usar o emacsclient para iniciar novas janelas sem carregar outra instância do emacs. É uma boa abordagem. Eu não testei no Windows, mas aqui está o link que explica como usá-lo. Espero que ajude você cara.

Servidor Emacs

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.