emacs在linux下体验很好,但是在Windows下启动速度奇慢无比,请问有什么好的解决方法吗?
可以考虑使用 WSL
好的,我试试看
设置下字体,可以在论坛里搜索字体设置。但要达到 Linux 的速度体验,还得上 WSL。
我现在还是主要用 Windows 原生 Emacs,启动慢点无所谓,我现在的启动时间是 8s 左右,同样配置在 Linux 上是 3s 左右。但是如果有需要恢复的 session,一般就要 18s 左右了。
启动慢还有一个原因是加载 org-mode 的各个模块。
我在 early-init.el 中加入了 (setq org-modules-loaded t)
,不让加载其他的 org 模块。
我在启动过程中调整了GC的相关设置,目前启动时加载的包时32各,启动时间平均是0.6秒(Emacs自己统计的结果),
实际感受,会稍微长一点,不过也可以接受了。
win原生是不太行,我现在切换到wsl2了,总体而言比较流畅。
另外我装的包比较win原生的要少多了。
有兴趣可以编译一个native-compile的,据说还要快很多。
我在win10上用pretest 28.0.50原生版本。.emacs.d目录在笔记本nvme ssd盘上。emacs目录在笔记本的sata ssd上。
- 第一次启动大概5、6秒,第二次3秒以内。
- 用pdump会更快,但是update package后就要重新生成pdump文件,有点麻烦,基本不用。
- 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
看看,如果时间比较长,可以把配置文件拆分后,再跑。
我也已经开始用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)就行了。
最近使用 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非常模糊
发现这些包在 Windows 10 下启动非常耗时。同样配置,实际启动时间 Linux 上 4s ,Windows 上 35s
不知道有没办法延迟加载 像 tramp 这样的内置包,因为很少用到。还有 python 的 加载是不是因为 ob-python的加载引起的?
6049.477 ob-python 1513.987
6083.528 python 1479.126
6144.430 tramp-sh 1269.419
6198.424 tramp 1205.274
13996.886 org-roam 861.025
4777.729 ob-C 698.454
4856.789 cc-mode 618.675
12140.113 flycheck-package 592.026
12144.559 package-lint 587.239
6553.617 trampver 577.791
288.871 package 503.808
5476.194 ob-calc 485.203
14181.200 emacsql-sqlite 458.502
.... more .... more ...more
原来是 org-roam 在 after-init
后的启动,带动了 org-mode
一连贯的加载。 让 org-mode 懒加载就好了。
现在 Windows 上的启动时间控制在 10 s ,能接受了
还有一个包叫 auto-compile ,会严重影响 Windows 下 的Emacs 以及 org-mode 启动,因为它要扫描多次 load-path,而这个动作在 Windows 系统的成本很高,装的包越多,影响越大。
如果安装了这个包,同时需要在Windows 下使用原生 Emacs 的,建议尽早删了它,得不偿失。
在windows下原来9s,禁用了7s,省了2s。