Pregunta:
Como todo usuario de Emacs sabrá, actualmente estoy sufriendo de mi extensa configuración de dot-Emacs. Todos mis paquetes están dentro de los contenedores de use-package
, y compilé byte todos mis archivos .el
. Incluso con eso, Emacs se inicia en 6.4 segundos y luego carga el resto de los paquetes (alrededor de 40 de ellos).
Estaba pensando en otras formas de resolver el largo tiempo de inicio, luego noté algo. El Emacs predeterminado (sin configuración de usuario) usa muchas bibliotecas .el
, que se incluyen con cada Emacs. Están ubicados en \shares\emacs\version number\lisp\
.
Incluso con muchos archivos lisp, se las arregla para comenzar en un segundo. Cuando estaba inspeccionando los archivos de muchos paquetes que se incluyen con el Emacs predeterminado, no encontré nada extraordinario que pudiera explicar por qué Emacs se las arregla para iniciarse en un segundo. ¿Alguien podría decirme cómo Emacs maneja eso, incluso con miles de archivos .el
?
Respuesta:
¿Alguien podría decirme cómo Emacs maneja eso, incluso con miles de archivos .el?
Emacs "gestiona" eso al no cargarse al inicio, por lo que no detiene la carga de la aplicación principal. Esto, a su vez, es el efecto de devolver el control del teclado al usuario más rápido.
Pero, ¿cuándo se carga? En el primer uso de esa función, modo o característica.
¿No se ralentiza? Sí, en el primer uso. Esa es la compensación. ¿Desea reducir la velocidad en el momento de inicio de emacs o en el primer uso?
¿Se nota? La carga en el momento del inicio parece tardar más, ya que también se cargan otras bibliotecas principales. Pero en el primer uso se siente más rápido ya que solo se carga esa función de subconjunto.
Entonces, ¿por qué alguien recogería la carga al inicio? Debido a que a algunos no les importa esperar para cargar todas las bibliotecas de uso frecuente al inicio, una vez cargadas, todas las operaciones se realizan rápidamente a partir de entonces.
¿Cómo puedo elegir? Como Drew y otros han señalado en sus respuestas a esta misma pregunta, puede usar la carga automática y trucos similares para controlar. Pero la consideración más importante debe ser su patrón de uso. Si usa emacs como vi, abriendo y cerrando constantemente, sí, el tiempo de inicio se vuelve dolorosamente obvio. Pero, por otro lado, si usa emacs en ejecución todo el tiempo, el tiempo de inicio de 1 segundo o 1 minuto no será tan notable o lo suficientemente importante como para preocuparse.
Tenga en cuenta que puede usar el modo por lotes o Zile para un inicio instantáneo mientras prueba, ejecuta o usa emacs como vi.
Mi preferencia es cargar en el inicio para que cualquier error se detecte por adelantado. Prefiero no tener que lidiar con errores de carga mientras estoy en medio de un día laboral cuando tengo innumerables búferes, modos y estados de compilación activos junto con varias ubicaciones remotas administradas por TRAMP. La depuración de errores de carga automática en tales condiciones no es muy agradable.