Emacs诊断:组织模式无法忍受缓慢且经常停滞

时间:2016-11-24 19:20:24

标签: performance emacs org-mode profiler

My Emacs(Windows 10 64位下的GNU Emacs 25.1.1(x86_64-w64-mingw32))变得非常缓慢且不连贯,尤其是在Org模式下,例如可以暂停2秒以上移动光标,3秒以上刷新以显示扩展树。

基于我的基准测试初始化​​报告,我通过修改.emacs中的内容来减少需求和加载语句,将它们更改为自动加载挂钩或在eval之后加载,从而缩小了规模。

我还完成了一些探查器报告,一些结果看起来很难解释(例如'line-move-visual'使用大量内存),我不知道这些进程中包含了哪些包以下以及如何调整和进行更改以提高性能。下面是profiler-report(mem + cpu)的部分扩展输出,在处理大约1500行的.org文件时,提前感谢!

(work.org at ~1500 lines)
- command-execute                                         259,247,035  98%
 - call-interactively                                     259,247,035  98%
  - funcall-interactively                                 259,142,758  98%
   - previous-line                                        203,846,889  77%
    - line-move                                           203,846,889  77%
     - line-move-visual                                    92,655,384  35%
      - posn-at-point                                           3,520   0%
         file-remote-p                                          3,520   0%
       window-inside-pixel-edges                               12,844   0%
   - org-cycle                                             46,120,698  17%
    - org-cycle-internal-local                             45,429,666  17%
     - run-hook-with-args                                  45,176,010  17%
      - org-optimize-window-after-visibility-change        41,890,667  15%
       - org-subtree-end-visible-p                         41,862,858  15%
        - pos-visible-in-window-p                           2,111,314   0%
         - jit-lock-function                                  153,338   0%
          - jit-lock-fontify-now                              150,304   0%
           - jit-lock--run-functions                          135,144   0%
            - run-hook-wrapped                                135,144   0%
             + #<compiled 0x2c09399>                          135,144   0%
             #<compiled 0x2cf3709>                             15,160   0%
           file-remote-p                                       18,898   0%
         + eval                                                 1,056   0%
          org-end-of-subtree                                    1,056   0%
       + recenter                                              21,840   0%
      + org-cycle-hide-archived-subtrees                       47,260   0%
        org-cycle-show-empty-lines                              9,232   0%
      + org-cycle-hide-drawers                                  2,936   0%
     + org-show-children                                       12,456   0%
       outline-next-heading                                     5,120   0%
     + org-show-entry                                           1,776   0%
     + outline-flag-region                                      1,520   0%
    + org-hide-block-toggle-maybe                             114,356   0%
    + run-hook-with-args-until-success                         11,744   0%
    + org-cycle-item-indentation                                6,198   0%
    + org-cycle-level                                           5,648   0%
      org-at-table-p                                            5,312   0%
   + execute-extended-command                               8,947,699   3%
   + next-line                                                227,472   0%
  + byte-code                                                 104,277   0%
+ redisplay_internal (C function)                           4,519,393   1%
+ elscreen-run-screen-update-hook                              17,698   0%
  internal-timer-start-idle                                     8,137   0%
+ timer-event-handler                                           2,000   0%
+ eldoc-schedule-timer                                          1,056   0%
  ...                                                               0   0%

3 个答案:

答案 0 :(得分:8)

我发现这个包可能是我的Emacs中Org-mode减速的主要原因。

这是包裹&#39; org-bullets&#39;尚未更新2年以上。

删除其要求&#39;语句和我的.emacs文件中的所有后续相关设置,我的Emacs中的组织模式正在恢复到可用响应状态。

答案 1 :(得分:5)

我不知道这是否与您的问题有关,但我在Windows上也有一个非常慢的orgmode,特别是在制定议程时。

我发现以下行解决了这个问题,当我将它添加到我的大型orgmode文件中时:

#+STARTUP: showeverything

答案 2 :(得分:1)

有什么帮助我将undo-limit更改为50.默认值为80000(在Mac上酿造)。除非您确实需要任何大量的默认值,否则您应该相应地更改它。对我来说50就足够了。

(setq undo-limit 50)

修改 正如@Phil所指出的,这个变量与历史缓冲区中保留的字节数有关。对于大多数情况,它应该更大,不要腐败&#34;撤消&#34;特征。如果这是一个问题,请尝试哪种值最适合您。