为什么emacs开始很慢

时间:2016-03-04 15:41:14

标签: emacs

最近,我发现我的emacs启动缓慢。有时启动过程需要30秒,有时需要3秒。我想这与网络环境有关。但是,emacs -q总是可以快速启动。

1 个答案:

答案 0 :(得分:1)

这个问题就像问一个字符串"多长一段时间?您没有提供足够的信息。首先告诉我们哪个版本的emacs以及您运行的平台。

你提到emacs -q很快启动,所以我们可以假设你的init文件很慢。在没有分析你的init文件的情况下,我们有很多可能性并且无法确定。但是,您可以采取一些措施来帮助确定可能的原因。

@ Drew关于平分你的init文件的评论是识别你的init文件中问题根源的一个非常有用的技巧,特别是在尝试追踪错误时。当这些贡献者可以链接到特定的配置选项或包加载等时,它可以用于识别加载时间的主要贡献者。当问题是包含太多包的过低效率的低效init文件时,它不太有用。

使用@legoscia建议的分析器可以帮助确定要关注的领域,但仍然需要解释和理解分析器告诉您的内容。

我的建议是

  1. 其他套餐。自从引入package.el和emacs包档案以来,我观察到一些用户为了以防万一而不得不放弃并安装大量软件包的趋势。运行C-h p并浏览已安装的软件包。如果您没有使用任何或者您在那里看到的不再需要或使用的产品,请将其删除。每个附加软件包(取决于它们的加载方式 - 见下文)将使您的启动时间增加一些,因为每个软件包都需要加载。加载您不需要或不需要的软件包会减慢启动时间。

  2. 你不需要或不了解的东西。随着时间的推移,我们的初始文件可以随着内容的增长而增长,我们不记得为什么我们添加它,或者它可能是我们从其他人那里复制过的东西,我们认为我们可能需要忘记这些东西。每隔几个月(取决于您修改初始化的频率 - 如果您经常更改,可能会更频繁,如果您不经常更改,则可以通过您的初始文件并注释掉您不需要的任何内容,不要&# 39;理解或不理解你添加它的原因。只是评论它,不要删除它。重新启动重新启动emacs并查看它是否更快启动以及您想要/需要的功能或配置设置是否已经消失。如果有,请查看您已注释掉的内容,看看是否有任何相关内容。当你找到可能的候选人时,试着弄清楚代码在做什么(查看emacs手册,使用Ch f和Ch v或Ch m等尝试并解决它。如果它与特定包有关,请尝试Mx自定义-package,看看是否有内置的自定义可能会给你你想要的东西。即使你更喜欢手工定制东西而不是使用emacs内置的自定义系统,Mx customize-group是一个很好的方法来找出包支持哪些自定义,并验证变量名称是否正确等。

  3. 了解emacs自动加载广告。 Emacs有一个非常有用的功能叫做自动加载。将包加载到emacs有两种主要方式。首先是做一个基本的要求'。这将查找具有相应名称的emacs库,并将其读入并对其进行评估(这就像将文件添加到init文件中,因此要评估更多行,这意味着增加了init的加载时间)。关于require的好处是它只是加载整个文件而你知道所有内容都会被评估。糟糕的是,它可以反过来需要其他文件,这可能需要其他文件,并可能导致更长的初始化时间。为了尝试解决此问题,emacs具有自动加载功能。基本上,使用自动加载,您告诉emacs如果它尝试执行名称为“foo”的命令,则必须首先加载(要求)您在自动加载定义中定义的特定文件。这里的优点是emacs在您第一次尝试使用它之前不会尝试加载库,因此加载时间不会增加。缺点是它可能意味着第一次使用命令时会出现延迟,如果init的其他部分使用该命令,它将无法工作(好吧,它会起作用,但对改善负载没有影响)时间)。

  4. 切换到use-pckage。有一个非常有用的包名为use-package,可以帮助解决我提到的所有问题。它有助于区分您的配置,简化一些常见的配置任务,并支持使用自动加载设置包或推迟加载包直到emacs空闲。如果您正确使用它,它可以帮助您大大加快初始化时间。强烈建议一试。请参阅https://github.com/jwiegley/use-package