关于load-path增多对emacs运行速度的重大影响

基于最新的emacs commit 改了个load函数

用法就是先正常使用, 然后在 scratch里面C-x C-e 调用 (load-write-cache-file)
就会自动在.emacs.d下面创建一个 .load-cache 里面包含了缓存(现在还比较呆,不会覆盖内存缓存的值,如果native-comp编译完了,需要先关闭emacs,删除缓存文件, 重新打开emacs后再调用写缓存函数)

下次启动的时候emacs就会先从这个文件里面读取缓存

我实际测试了下,使用chenbin的配置,init.el开头加上后缀设置.

(setq load-suffixes '(".eln" ".elc" ".el"))
(setq load-file-rep-suffixes '(""))

对比了三个版本,
1 官方的emacs30.2
2 kiennq emacs-bc56c10-ucrt-x86_64-mps最新 mps release
3 自己编译的

启动速度 emacs30.2和自己编译的都是1.2秒左右, kiennq是1.87秒
第一次使用某个功能时卡顿的问题也得到解决, 比如find-file 或者启动eglot时候
find-file速度对比 自己编译的是0.07秒左右 ,emacs30.2和kiennq版本是0.4秒左右
(之前测试的时候发现奇怪的现象,就是kiennq版本打开文件的速度也提升了,后来发现是因为他会预加载recentf里面的文件, 测试之前都把recent记录删掉能得到第一次调用find-file打开一个新文件需要的真实时间)

测试代码

(let ((time (current-time)))
  (find-file "C:\\temp\\1.txt")
  (message "%.06f" (float-time (time-since time))))

@include-yy

3 个赞