性能更好的emacs

背景

偶然看到一篇知乎上的文章讲emacs,
提到了 gccemacs 可以 革命性, 大幅提升 emacs 所有功能 的性能.
于是拿来看一看.

介绍

最初是由gcc的贡献者Andrea Corallo宣布的,
原理似乎是直接将lisp语句编译成机器码,而不是现在的编译为字节码,然后用解释器跑.
有人放出性能对比,据说上升2到25倍.

随着项目日渐成熟,已经加入了emacs的官方仓库(据说是 faeture/nativecomp 分支).
因此可以见到许多自行编译的人是通过下载emacs的官方仓库来编译的.

未来可能会出现大家要求一些内置的库可以预编译发布(那可能就是另一个melpa仓库了,叫belpa?)

安装

arch linux下软件称为 emacs-native-comp-git (版本为29)
虽然还有一个软件叫 emacs-native-comp-git-enhanced (版本为28)
但既然都是不稳定软件.还是要最新的29.
由于使用了libgccjit,因此也会一并安装.
安装后的命令依然叫 emacs,不会有习惯上的差别.

macs下安装时,通常使用

1
2
3
brew install gcc libgccjit
brew tap d12frosted/emacs-plus # 如果是第一次安装emacs-plus的话
brew install emacs-plus@29 --with-native-comp

缺少 brew tap xxx 会导致不认识选项 --with-native-comp
该方式下会从git仓库的下载开始(1.3G),然后编译,编译时候还没有使用多核,要等很久.

有些地方建议第一次启动先不用配置.然后再使用有配置地启动.
我漏看了,但编译上没有太大问题.除了看到有大量的关于lisp代码的语法警告(行宽超过80).

如果选择不再警告,则会在用户配置中添加一行

1
2
3
4
(custom-set-variables
;; ...
'(warning-suppress-types '((comp)))
)

实测性能表现

CPU 包数量
Ryzen 5900HX 305 1.51s 1.35s
i7 9700k 338 3.95s 3.666s
i5 8259U 325 7.1s 5.1s

启动阶段的确有7%的提升.

变化最大的是个人配置的加载,原始可能要0.026s,而现在只用了0.003s
(是不是说个人的配置太菜,优化空间太大)

打开大型org文档后,浏览过程中卡顿减少(但也还有).

稳定性

感觉最容易出问题的 org-mode 现在没有什么问题,可以说是稳定的版本.
emacs毕竟是一个编辑器,性能不那么重要也行,最主要是功能强就好.

参考

  1. 看到的知乎文章
  2. gccemacs的原始介绍
  3. gccemacs的更多介绍
  4. arch上安装gccemacs
  5. 性能对比
  6. 关于在mac上的安装