emacs启动快n倍的思路

一个很常见的说法是emacs是一个elisp解释器, 启动时代表着一组状态, 随着emacs加载配置脚本会不断修改自身状态的过程. 最后变成了一个符合我们需求的编辑器.

但是这里有个问题, 我们想要的其实只是最终执行完所有配置的emacs. 但实际上每次启动都会把这个改造过程给执行一遍.这也是emacs启动慢的原因.

如果能把配置完成后的emacs状态保存下来, 启动时直接加载这个状态, 启动速度应该能快n倍, 也不需要lazyloading了.

pdumper能完全满足这个想法吗? 貌似只是保存了指定包的状态? 另外我看了几个流行的配置 ,除了spacemacs, 对这方面支持都很少. 我感觉这才应该是正确的启动方式. 大家怎么看?

1 个赞

Yes, pdump 就是一种。如果是限定 linux 的话那还可以用 CRIU

pdump就是干这个的,前提是不修改配置。

接受现实,不折腾启动速度 :grin:
追求启动速度还是用 emacsclient 靠谱。

5 个赞

嗯,emacsclient 几乎能解决所有问题了。

对,用emacsclient是终极方案 :smile:

其实用延迟加载启动还是能接受的,不会比装满插件的各类编辑器、IDE慢

2 个赞

emacs的启动速度搞到1、2秒就够了,一般打开了就很少关,再折腾太浪费时间。我在win和macos中现在也不折腾native-comp了,太浪费精力,正常用感觉不出慢多少。

1 个赞

你可以所有的配置也做成包 dump,只留一个极简的 init.el

1 个赞

现在我基本上也是这样,开机自启daemon,写代码的时候直接emacsclient,不过不知道,怎么双击打开文件的时候默认也用emacsclient

emacs 启动速度优化方案总结:

  1. daemon. 这是一个可行的方案, 但是 Mac 下我用的是 emacs-mac 版本, server 如果开在终端, client 用命令行打不开GUI, 而个人喜欢用GUI. 造成daemon模式在mac下对我来说不适用.
  2. GC优化. 详细 5点优化见我的博文总结 从零配置Emacs之启动优化
  3. dump. 这个我也折腾过, 狗哥和学姐给了我很大的帮助. 具体见 我的配置之pdump. 这的确是开机启动大杀器, 再复杂的配置开机启动基本上能达到 1s以下. dump 适用于配置稳定时期, 如果你的配置还在剧烈的变动, 就显得很麻烦.

最后, 在经历了一段时间emacs启动速度优化的沉迷, 将上面3种方案尝试一遍之后, 回头总结, 启动优化这个问题不太需要关注, 当初花费那么多时间折腾有点浪费生命了, 因为个人的使用习惯是 开个Emacs GUI 就不关闭了, 启动速度优化就显得鸡肋.

2 个赞

emacsclient -n -c 不行吗?

我在 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一样。