一个很常见的说法是emacs是一个elisp解释器, 启动时代表着一组状态, 随着emacs加载配置脚本会不断修改自身状态的过程. 最后变成了一个符合我们需求的编辑器.
但是这里有个问题, 我们想要的其实只是最终执行完所有配置的emacs. 但实际上每次启动都会把这个改造过程给执行一遍.这也是emacs启动慢的原因.
如果能把配置完成后的emacs状态保存下来, 启动时直接加载这个状态, 启动速度应该能快n倍, 也不需要lazyloading了.
pdumper能完全满足这个想法吗? 貌似只是保存了指定包的状态? 另外我看了几个流行的配置 ,除了spacemacs, 对这方面支持都很少. 我感觉这才应该是正确的启动方式. 大家怎么看?
1 个赞
Youmu
2
Yes, pdump 就是一种。如果是限定 linux 的话那还可以用 CRIU
接受现实,不折腾启动速度
追求启动速度还是用 emacsclient
靠谱。
5 个赞
嗯,emacsclient 几乎能解决所有问题了。
对,用emacsclient是终极方案
其实用延迟加载启动还是能接受的,不会比装满插件的各类编辑器、IDE慢
2 个赞
emacs的启动速度搞到1、2秒就够了,一般打开了就很少关,再折腾太浪费时间。我在win和macos中现在也不折腾native-comp了,太浪费精力,正常用感觉不出慢多少。
1 个赞
你可以所有的配置也做成包 dump,只留一个极简的 init.el
。
1 个赞
现在我基本上也是这样,开机自启daemon,写代码的时候直接emacsclient,不过不知道,怎么双击打开文件的时候默认也用emacsclient
emacs 启动速度优化方案总结:
- daemon. 这是一个可行的方案, 但是 Mac 下我用的是 emacs-mac 版本, server 如果开在终端, client 用命令行打不开GUI, 而个人喜欢用GUI. 造成daemon模式在mac下对我来说不适用.
- GC优化. 详细 5点优化见我的博文总结 从零配置Emacs之启动优化
- dump. 这个我也折腾过, 狗哥和学姐给了我很大的帮助. 具体见 我的配置之pdump. 这的确是开机启动大杀器, 再复杂的配置开机启动基本上能达到 1s以下. dump 适用于配置稳定时期, 如果你的配置还在剧烈的变动, 就显得很麻烦.
最后, 在经历了一段时间emacs启动速度优化的沉迷, 将上面3种方案尝试一遍之后, 回头总结, 启动优化这个问题不太需要关注, 当初花费那么多时间折腾有点浪费生命了, 因为个人的使用习惯是 开个Emacs GUI 就不关闭了, 启动速度优化就显得鸡肋.
2 个赞
我在 Mac 上通过 Nix 安装的 master 分支 Emacs 28,server 开在终端, 通过 emacsclient -c
就可以打开GUI Emacs。
另外,请问下-n
是什么意思?
$ emacsclient --help
...
-n, --no-wait Don't wait for the server to return
...
1 个赞
我用 homebrew 安装的 emacs-mac 分支不行.
你说的这个思路没错,但是估计在Emacs核心用户群体里面估计不适用,他们经常会忍不住修修补补自己的配置。
如果经常改配置,pdumper 的思路反而很烦人,很多emacser宁愿忍受启动稍微慢一点,都不愿意限制自己折腾的空间。
面对这些用户, lazy-load 的思路也许是一个比较好的折中办法。
2 个赞
或许应该考虑下执行快n倍的方法。启动快n倍,好像处于写hello world一样。