Emacs在Windows下启动非常慢!

emacs在linux下体验很好,但是在Windows下启动速度奇慢无比,请问有什么好的解决方法吗?

可以考虑使用 WSL

1赞

好的,我试试看

设置下字体,可以在论坛里搜索字体设置。但要达到 Linux 的速度体验,还得上 WSL。

我现在还是主要用 Windows 原生 Emacs,启动慢点无所谓,我现在的启动时间是 8s 左右,同样配置在 Linux 上是 3s 左右。但是如果有需要恢复的 session,一般就要 18s 左右了。

启动慢还有一个原因是加载 org-mode 的各个模块。
我在 early-init.el 中加入了 (setq org-modules-loaded t) ,不让加载其他的 org 模块。

1赞

刚好在某乎上看到这个,共同学习一下: https://zhuanlan.zhihu.com/p/59509596

2赞

我在启动过程中调整了GC的相关设置,目前启动时加载的包时32各,启动时间平均是0.6秒(Emacs自己统计的结果),

实际感受,会稍微长一点,不过也可以接受了。

win原生是不太行,我现在切换到wsl2了,总体而言比较流畅。

另外我装的包比较win原生的要少多了。

有兴趣可以编译一个native-compile的,据说还要快很多。

1赞

我在win10上用pretest 28.0.50原生版本。.emacs.d目录在笔记本nvme ssd盘上。emacs目录在笔记本的sata ssd上。

  1. 第一次启动大概5、6秒,第二次3秒以内。
  2. 用pdump会更快,但是update package后就要重新生成pdump文件,有点麻烦,基本不用。
  3. native-comp只会更慢,毕竟要把一堆eln加载到内存。启动后的运行速度比elc快。

跑个benchmark看看到底是哪里慢,如用benchmark,在init.el里面加上

(require 'benchmark-init-modes)
(require 'benchmark-init)
(benchmark-init/activate)

启动后 M-x benchmark-init/show-durations-tree 看看,如果时间比较长,可以把配置文件拆分后,再跑。

2赞

我也已经开始用wsl了,但是wsl有点小问题就是eaf装不了,因为npm的安装会被windows侧干扰,所以现在wsl的emacs里只装了orgmode。

可以做到Windows原生版启动1或2秒左右。Cygwin版本4秒或5秒。 其他操作系统0.5秒以内。当然这也取决于硬件。在我i3 cpu的老电脑是这样的性能。 具体技术主要也就是autoload, with-eval-after-load, idle load也使用了一些.

还有一些小众的技术不便于展开,可以看doomemacs的wiki,看我的emacs.d的历史记录也可以。个人建议对于小众技术在掌握Emacs Lisp前不宜钻研太深。直接使用成熟的发行版(distribution)就行了。

3赞

最近使用 use-package 优化了配置,在Windows 上 emacs-init-time 的结果只有 1.559931 seconds 但是实际上,从点击 Emacs 图标到能看到光标,鼠标能动需要的时间是 9s 左右。

同样的配置,在 Mac 上 emacs-init-time => 0.8s ,实际体验是 3s 左右。

目前是在wsl2终端下使用emacs-nox,感觉还可以,操作虚拟机内的文件速度非常快(指magit),就是终端下的org-mode不好用,我还留了一个Windows的原生emacs,仅保留org-mode相关配置

Windows 下我主要用的多还是 org-mode ,需要能方便的访问 Windows 系统的文件,所有还是舍弃不了 Mingw64 的 Emacs。

最近 Windows 11 正式版刚发布,准备升级后尝试下最新的 wslg

wslg里无法调用Windows端的输入法

输入法好解决,我是用 emacs-rime的。

4k分辨率下wslg中emacs的GUI非常模糊