自 有没有人日常使用portable dumper?能不能分享一下配置? 继续讨论:
学习了一下Spacemacs,现在可以日常用portable dumper了。非常好用,我的配置有3x的提速,而且不像autoload,dump的包都是立即可用。迁移非常简单,我一共只改了~30行代码。
思路是只把启动就需要的包dump出来,比如company,ivy/helm,主题等等。
详细过程在博客里,这里简单说一下坑:
- dump不保存load-path,需要曲线救国,dump的时候存到另一个变量里,在init里load回来
- 用dump 文件启动Emacs,transient-mark-mode 和 global-font-lock-mode默认是关闭的,需要手动启动一下
- 用dump文件启动,路径不能用
~
,比如emacs --dump-file=~/.emacs.d/xxx
不行。
- scratch buffer不太完整,我是这么解决的:
(add-hook 'after-init-hook
(lambda ()
(save-excursion
(switch-to-buffer "*scratch*")
(lisp-interaction-mode))))
我得补充一下,3x提速主要是因为之前像company这些包都不autoload的。如果是autoload all the way的同学,dump对启动速度的提升可能没那么明显。(不过你再autoload,能autoload主题?加载一个主题就要0.7s(滑稽
7 个赞
Nasy
2
好奇,乃现在的启动速度是多少呢?我200多个包,可以到0.8s…如果dump的话,感觉也没有提升的地方了
@Nasy 你说的对。相对高度优化的配置,启动速度不会有明显的提高。但dumper带来的优势是,所有dump过的包在Emacs启动完就等于加载完。一个包再怎么autoload,用的时候还是要加载的。这个时间不能忽略不计吧。有些包如果autoload处理得不恰当,不论Emacs启动多顺滑,用的时候多多少少会出现卡顿。dumper就没这样的问题。此外,更重要的是,根本不用再花精力考虑如何autoload,直接dump就好了。
1 个赞
为什么不用emacsclient的方式呢,感觉这样速度更快啊。
不管是GUI还是TUI,都可以秒开啊。
虽然daemon启动需要时间,但是dump也需要时间啊。而且就算是优化到0.5s,感觉也还是有个明显的打开的时间。
我其实很少重启Emacs,但是Emacs启动不如VSCode让我很不爽。
学习了。dump了下面的packages
(dolist (package '(use-package org org-crypt
benchmark-init-modes benchmark-init
gcmh
doom-themes doom-deeper-blue-theme
doom-modeline all-the-icons
;; elec-pair
highlight-parentheses
winum
auto-compile
helm helm-elisp helm-ag helm-swoop
;; evil
evil-maps
magit
lsp-python-ms
lsp-mode))
(require package))
在虚机,x11中从1.5s到0.8s。win10上从3s降到1.5s左右。
不知道在linux和win 10上,为什么加上evil后emacs就coredump。
我好像看见一个bug report,就是evil会导致segfault
谢谢。怪不得按你的blog使用pdump的时候,一启动就coredump。排除了几个package后发现evil有问题。
win10上生成dump:
emacs --batch -q -l e:\home\albert\.emacs.d\dump.el
启动:runemacs --dump-file="e:/home/albert/.emacs.d/emacs.pdmp"
去掉magit和lsp-mode后,1s能启动。反正magit、lsp-mode在win10上速度就慢,不差那点时间。
3 个赞
好的,先把global-undo-tree-mode去了试试。
(require 'evil)
会启动undo-tree-mode
吗?
niwtr
13
这个report是我提的 本来想把pdumper搞进我的配置里,但在evil这里卡住了。看来还是高估了现实情况
yqu212
14
建议大家去参考一下spacemacs的dumper配置。比较成熟,常见问题都解决了。哪些包有问题已经有人踩过坑了。
我看里面的讨论,100%完美dump配置过的Emacs不在Emacs 27.1的计划里,更完美的支持可能要等Emacs28了。不过只是dump一些包的话,现在完全没有问题。
niwtr
16
对没错,完美的pdumper并不在人家的计划里。
不过,他们的计划列表到底是啥样的呢……
如果升级 ivy 或者 company,是不是要全部重新 dump?
yqu212
18
对。需要全部重新dump,会花些时间。不过可以通过子进程完成,不影响正常使用。
zsxh
20
使用了一下,发现一个需要注意的地方,dump的环境跟实际使用的环境可能是不一样的,比如(display-graphic-p)的返回值