emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: follow-mode: extremely slow in combination with org-mode


From: Gerald Wildgruber
Subject: Re: follow-mode: extremely slow in combination with org-mode
Date: Tue, 19 Jun 2018 15:53:55 +0200
User-agent: mu4e 1.1.0; emacs 27.0.50

Hi

I tried the patched follow.el (the one that contains the modified
follow-calc-win-end) on my somewhat slower (but also new quad core)
office machine, unfortunately no amelioration of lag was noticeable.

Same procedure: patching follow.el, starting the profiler, loading the
patched uncompiled version into emacs via M-x load-file and finally
start editing.

The lag remains enormous (e.g. more than a second lag between typing RET
and seeing a newline on screen); I noticed however, that upon typing RET
one time, the newline comes almost immediately; but after typing more
RETs they take ages to appear on screen.

Bizarrely, this happened also: redisplay takes very long and it
apparently aborts leaving paragraphs before point unfilled, one long
line of text (I always use auto-fill-mode).

On So, Jun 17 2018, Eli Zaretskii <address@hidden> wrote:

> Each character you insert triggers redisplay, and I'm guessing
> follow-mode has many of the redisplay optimizations disabled.

Actually, I had no idea. I tried to understand what "redisplay" is (by
reading the comments at the beginning of emacs/src/xdisp.c) and the more
I read, the less I am surprised it takes so long! :-)

Why might those optimizations have been disabled on follow-mode?

> But it may be interesting to see a profile when all you do is type
> self-inserting characters, maybe we will learn something important
> from that.

Here is another profile, now on my office machine with only
self-inserting commands, i.e. typing just "normal" letters:

- follow-post-command-hook                                      54982  61%
 - if                                                           54982  61%
  - let                                                         54975  61%
   - save-current-buffer                                        54975  61%
    - follow-adjust-window                                      54975  61%
     - if                                                       54972  61%
      - progn                                                   54972  61%
       - let                                                    53646  59%
        - let*                                                  53646  59%
         - if                                                   53646  59%
          - follow-redisplay                                    49062  54%
           - let*                                               49062  54%
            - cond                                              43568  48%
             - follow-calculate-first-window-start-from-above              
43568  48%
              - save-excursion                                  43568  48%
               - let                                            43568  48%
                - while                                         43564  48%
                 - if                                           43564  48%
                  - setq                                        42813  47%
                   - follow-calc-win-start                      42813  47%
                    - while                                     42813  47%
                     - let                                      42802  47%
                      - setq                                    42789  47%
                       - car                                    42789  47%
                        - follow-calc-win-end                   42785  47%
                         - let                                  42785  47%
                          - save-current-buffer                 42785  47%
                           - unwind-protect                     42785  47%
                            - progn                             42777  47%
                             - let*                             42767  47%
                              + setq                               10   0%
                              + window-end                          4   0%
                     + and                                          7   0%
                  + not                                           747   0%
                    if                                              4   0%
            + follow-calc-win-start                              3062   3%
            + follow-estimate-first-window-start                 1410   1%
            + let                                                1022   1%
          - let                                                  4574   5%
           - redisplay                                           4570   5%
            - redisplay_internal (C function)                      17   0%
             - eval                                                11   0%
                if                                                  8   0%
                mode-line-eol-desc                                  3   0%
          + follow-avoid-tail-recenter                              7   0%
            if                                                      3   0%
       + follow-windows-start-end                                1326   1%
     + progn                                                        3   0%
  + follow-post-command-hook                                        3   0%
+ command-execute                                               27012  30%


Anything else to try to get a faster follow-mode?

Thanks

Gerald.


---------------------
Sent with mu4e



reply via email to

[Prev in Thread] Current Thread [Next in Thread]