Alguém poderia me dizer como o Emacs gerencia isso, mesmo com milhares de arquivos .el?
O Emacs "gerencia" isso não carregando na inicialização, impedindo o carregamento do aplicativo principal. Isso, por sua vez, é o efeito de retornar o controle do teclado ao usuário mais rapidamente.
Mas quando é carregado? No primeiro uso dessa função, modo ou recurso.
Não diminui a velocidade? Sim, no primeiro uso. Essa é a troca. Deseja diminuir a velocidade na inicialização do emacs ou no primeiro uso.
Isso é perceptível? O carregamento no momento da inicialização parece demorar mais, pois outras bibliotecas principais também são carregadas. Mas, no primeiro uso, parece mais rápido, pois apenas esse recurso de subconjunto é carregado.
Então, por que alguém pegaria carga na inicialização? Como alguns não se importam em esperar para carregar todas as bibliotecas usadas com freqüência na inicialização, uma vez carregadas, todas as operações são executadas rapidamente depois disso.
Como posso escolher? Como Drew e outros apontaram em suas respostas a essa pergunta, você pode usar o carregamento automático e truques semelhantes para controlar. Mas a consideração mais importante deve ser o seu padrão de uso. Se você usa o emacs como vi, constantemente abrindo e fechando, sim, o tempo de inicialização se torna dolorosamente óbvio. Por outro lado, se você usar o emacs em execução o tempo todo, o tempo de inicialização de 1 segundo ou 1 minuto não será tão perceptível ou importante o suficiente para se importar.
Observe que você pode usar o modo em lote ou o Zile para inicialização instantânea enquanto estiver testando, executando ou usando o emacs como vi.
Minha preferência é carregar na inicialização para que quaisquer erros sejam detectados antecipadamente. Prefiro não ter que lidar com nenhum erro de carga durante um dia de trabalho, quando tenho inúmeros buffers, modos e estados de compilação ativos, juntamente com vários locais remotos gerenciados pelo TRAMP. A depuração de erros de carregamento automático nessas condições não é muito agradável.
:defer t
em suasuse-package
declarações sempre que possível?