性能更好的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 | brew install gcc libgccjit |
缺少 brew tap xxx
会导致不认识选项 --with-native-comp
该方式下会从git仓库的下载开始(1.3G),然后编译,编译时候还没有使用多核,要等很久.
有些地方建议第一次启动先不用配置.然后再使用有配置地启动.
我漏看了,但编译上没有太大问题.除了看到有大量的关于lisp代码的语法警告(行宽超过80).
如果选择不再警告,则会在用户配置中添加一行
1 | (custom-set-variables |
实测性能表现
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毕竟是一个编辑器,性能不那么重要也行,最主要是功能强就好.