hsingko


编译 emacs 29

听说 emacs-29 添加了内置 sqlite 支持,这个功能会很大程度地优化 org-roam 的性能。现在我的 org-roam 里面已经有 900 个左右的 node 了,冷启动的时候大约需要加载两三秒钟的样子,我想既然有优化的空间,那为什么不试试看新版本的 emacs 呢?

唯一的问题是目前 arch 源最新的版本是 28 ,如果想要使用 29 那么需要自己编译。我手头的机器是 thinkpad T470 ,五年前的机子性能自然不怎么样,有点担心需要花上很长的时间才能安装好,但反正也没其他的事情想要去做,为什么不试试看呢?

我使用的 aur 源是 emacs-git ,编译之前我开启了多核并行编译选项,以及开启了 gnome 的超频设置,这可以让我的 cpu 最大频率上升到 3.1GHz 。最终的结果是:

  • 编译 emacs 花费 30 分钟
  • 使用 doom sync 重新编译相关包花费 17 分钟

cpu 全程满负荷,温度最高上升到 80 摄氏度,烤得整个房间都热起来了,而且我的房间里还没有空调!

之后安装 emacsql-sqlite-builtin 包,以及在 config.el 中开启 org-roam 的支持:

(setq org-roam-database-connector 'sqlite-builtin)

然而个人感觉 org-roam 的性能上没有什么明显的提升,可能就快了半秒钟的样子,当然可能是节点数还不够,不能体现出 builtin sqlite 的优越性,如果你的情况大概和我一样,那么我的建议是不要折腾,实在是没有必要为了这点提升而空等近一个小时(而且以后每次更新的时候都要重新编译一次,那可太糟糕了)而且 doom emacs 目前并不正式支持 29 ,因此可能会遇到各种各样的小毛病,我现在就遇到 emacs-rime 启动后无法正常关闭 emacs 的问题。

对了, emacs29 还提供了像素级滚动的功能,开启这个功能后,使用滚轮翻页会变得更流畅。个人体验还可以(但是还是不如 neovim 上的表现),在查看有长图片的 buffer 时会比较有用,如果对这个功能有强烈需求的话可以试试。

后续

今天写文章的时候, emacs 频繁卡死,心累,换回 emacs28 了。愿天堂没有折腾。