Questions tagged «load-path»

2
尽管有很多软件包,如何改善启动时间?
TL; DR我的软件包太多,以至于影响了我的启动时间。如果您不相信这种情况,请继续阅读。 我的Emacs启动时间非常短。我不使用use-package,我只是设置了很多钩子和autoloads,所以几乎所有代码都被推迟了。实际上,整个过程加载起来通常不到半秒,尽管看上去好像一团糟。 然而,随着时间的推移,我发现我的启动时间变细慢,令人费解。最终达到启动时间≥1秒的程度。我终于受够了,我深入探究了问题的根源。我最终注释掉了我的整个~/.emacs文件,发现启动时间仍然 ≥1秒。实际上,它只减少了大约0.2几秒钟,有时甚至更少。然后,我尝试emacs -q发现启动时间为〜0.1秒。 通过阅读Elisp手册的这一部分,我发现了为什么要这么emacs -q减少启动时间。显然emacs -q阻止了Emacs在启动时做三件事: 加载您的初始化文件 加载default.el文件 呼唤 package-initialize 我们已经排除了我的init文件,因为注释掉我的整个文件~/.emacs几乎没有任何作用。我不使用default.el文件,因此也排除了该文件。这package-initialize是造成性能下降的罪魁祸首。 为什么package-initialize要占用这么多启动时间?那是我问自己的第一个问题。我不是自动加载所有内容吗?嗯,是。但是,这恰恰是问题。 我发现这篇文章解释了“激活”软件包包括读取自动加载文件和设置加载路径。当您有许多软件包时,这显然会导致I / O损失,因为您有许多要读取的自动加载文件和许多设置路径。不幸的是,没有这个,管理自动加载的任务就落在用户手中。换句话说,在不让package.el爬网文件系统自动加载文件和路径的情况下,我必须亲自管理该过程,这可能是一个乏味且容易出错的过程。 我宁愿不走那条路。我目前有116个软件包,其中有107个来自ELPA,其中25个是依赖项。我确信这个惊人的数字是对我的表现造成如此严重的影响。但是我很困惑,因为我不想删除任何软件包。 在这种情况下是否有任何补救措施可以使我的闪电启动时间恢复原状? 更新: 我们已经开始了一个新的线程上emacs-devel关于邮件列表的一些 补丁由斯特凡Monnier的(这些补丁的描述是这里)来解决这个问题。欢迎任何人测试他的补丁并提供反馈。 另一个更新: 似乎Stefan Monnier对这个问题不再感兴趣,或者他没有收到我的消息。我倾向于相信前者,这很好,尽管在这种情况下,我将感谢他的某种回应。无论如何,到目前为止,他为该问题编写的代码都运行良好。他的最新补丁可以在此处(对于Emacs 25.3)和此处(对于Emacs master分支)找到。由于有了他的补丁程序,我在启动时间上看到了很好的改进,并且我对启动时间感到满意,因为它在不减少自定义功能的情况下尽可能地得到了优化。我希望这些修补程序能够在某个时候进入Emacs主线,但我想我(或其他人)现在必须为此承担火炬,而不是Stefan。在邮件列表中,我们有些关于版权转让和许可的问题。最初,我对此感到不舒服,但是由于理查德·斯托曼(Richard Stallman)和其他人的一些评论,版权分配可能没有我最初想象的那么严格。此外,我可能有可能将我的作品提交到公共领域,以替代版权转让。 无论如何,感谢Stefan到目前为止的补丁!我希望您会继续开发这些更改,但是如果没有,那就可以了,我可能会在某个时候继续开发它。我还要感谢其他所有为解决此问题提供见识和贡献的人。 另一个更新: 哇,该功能终于登陆了,将在Emacs 27中使用。感谢Stefan Monnier!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.