可能有同学对这个话题感兴趣。我在这里稍作总结,平台是Windows,欢迎大家批评指正。想交流或者提问可以留言。
为什么要使用 pdumper?
最主要的原因是Windows平台下 emacs 启动的速度太慢,Windows 下启动 350 个左右的包的 spacemacs 平均在120s以上(非SSD)。当然这和我的配置肯定有关系,但是即使再优化,启动时间 40s 以上肯定是有的。这个已经是无法容忍了。
使用pdumper的话启动时间直接缩短到3s左右。曾经也有过1s多点,但是配置变了以后再没有1s了。3s对我来说已经够用了,所以没有深究其中的原因。
另外用 pdumper 版本可以不用 lazy load 了,先将 orgmode,python-mode 等启动较慢的 mode 加载后再 dump,之后打开这些 mode 就快多了。
使用pdumper的主要痛点
-
无法使用 profiler。profiler 是一个非常有用的工具,但是 pdumer 版本的 emacs 无法使用,这是一个已知的 bug,目前还没有解决方案: pdumper: M-x profiler-start crashes
-
无法使用 url-retrieve-synchronously
。这也是 pdumper 版本独有的 bug,但是和上面的不同,只要不是从 pdmp 文件启动都不会有这个问题。
-
每次更新配置后都要重新 dump,这个比较麻烦。但是如果你不经常更新,那这也不是什么大问题。
1 个赞
xxoo
2
非常感谢,我也一直尝试但不成功,已经放弃了,看到这个真想再捞起来
- 我是用官方27dumper,你成功的是那个版本?
- 改动了哪些配置?好像在快捷方式上要加个什么参数,但没什么效果
- 我的不成功是指:能生成一个dmp的文件,但下一次启动貌似没有调用之,还是和普通启动同样的时间。
这个大概是什么原理,可以理解为像操作系统休眠那样把整个内存保存到磁盘,下次启动时直接加载那个文件?
各位大佬,听说dumper emacs在windows上启动飞快,可我找了半天
也没有发现dump-emacs这个函数呀,请问哪里有教程?不胜感激。
好像真的有诶,自己编译了一个pdump的分支,谢谢!有问题在来问
还是有问题,C-h f dump-emacs 能够找到该函数的说明,但是
M-x 却无法调出这个函数,何解?
cireu
9
M-x 只能调出command,不是所有subroutine都是command。
另外pdumper来dump Emacs的函数是dump-emacs-portable
,dump-emacs
是老dumper
可是连dump-emacs-portable 也没有
(dump-eamcs-portable "~/.emacs.d/emacs.pdump")
显示空函数
Debugger entered--Lisp error: (void-function dump-eamcs-portable)
(dump-eamcs-portable "~/.emacs.d/emacs.pdump")
eval((dump-eamcs-portable "~/.emacs.d/emacs.pdump") nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
关于dump emacs的用法有没有个详细的教程呢?网上找了很久都没找到–!
不好意思,是我写错了,应该是
dump-emacs-portable
后续能dump出来一个文件,那么然后该怎么使用这个dump文件启动emacs呢?
emacs --dump-file /path/to/your/dumpFile
启动.
wsug
13
我也来尝试下pdumper,找教程,换emacs27,生成文件 emacs --batch -q -eval "(dump-emacs-portable \"d:/file/emacs.pdump\")"
, 启动emacs --dump-file="d:/file/emacs.pdump"
, 然后感觉好像也没什么变化 ,生成的dump文件6.84m,这个对吗
cireu
15
用-q
来dump等于没有dump。因为编译时就会把初始环境dump一次。
Weiss
18
有谁同时用 straight 和 pdumper 的吗,能不能分享下配置。
我简单的把 dolist
下的 require
换成了 straight-use-package
,然后各种报错。难道要把 straight 目录下的所有文件夹都加到 load-path 里面?
hek14
19
我也是不懂怎么弄,最后妥协用回package.el了
为什么要改require?你应该改的是package-initialize,把它改成straight的初始化函数