bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#32175: Terrible performance of c++-mode refontifying


From: Konstantin Kharlamov
Subject: bug#32175: Terrible performance of c++-mode refontifying
Date: Mon, 16 Jul 2018 16:36:29 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

Sometimes for working with C++ code I start experiencing lags for typing
the text, like, 1-second delay between pressing the key and the actual
text appearing. This does not happen at the beginning of the work, but
rather after Emacs have been running for a while.

It seems to be a per-buffer issue. E.g. right now I
have the problem in one c++mode buffer, but not in another.

This problem have definitely existed for 2 years (maybe more). I
didn't report it because I thought it's my computer slow. I attached
profiling result at the end, and I remember that some years ago traces
of low performance have also been leading to functions about
refontifying.

Emacs version: GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2018-07-06
(It's 12 days old build from git, commit 3bbd4ffc68b)

FWIW it's built with -flto -march=native options, i.e. I have as much
optimization as possible.

Profiling below is done by pressing <SPACE> key, then waiting for
symbol to appear; and repeating this for ≈10 times.

- redisplay_internal (C function)                                6900  69%
 - jit-lock-function                                             6887  69%
  - jit-lock-fontify-now                                         6887  69%
   - jit-lock--run-functions                                     6873  69%
    - run-hook-wrapped                                           6873  69%
     - #<compiled 0x289f6f5>                                     6873  69%
      - font-lock-fontify-region                                 6873  69%
       - c-font-lock-fontify-region                              6866  69%
        - font-lock-default-fontify-region                       6514  65%
         - font-lock-fontify-keywords-region                     6447  65%
          - c-font-lock-declarations                             5059  51%
           - c-find-decl-spots                                   5012  50%
            - c-bs-at-toplevel-p                                 2972  29%
             - c-brace-stack-at                                  2937  29%
              - c-update-brace-stack                             2831  28%
               - c-syntactic-re-search-forward                   1263  12%
                + c-beginning-of-macro                            548   5%
                  #<compiled 0x14ed36d>                             6   0%
               - c-forward-<>-arglist                            1220  12%
                - c-forward-<>-arglist-recur                     1041  10%
                 + c-syntactic-re-search-forward                  285   2%
                 + c-forward-<>-arglist-recur                     245   2%
                 + c-backward-token-2                             125   1%
                   c-forward-sws                                   52   0%
                 + c-backward-sws                                  12   0%
                 c-beginning-of-current-token                      48   0%
                 match-string-no-properties                         6   0%
            + #<compiled 0x1503add>                              1823  18%
            + c-beginning-of-macro                                 40   0%
              c-backward-sws                                        8   0%
              c-forward-sws                                         6   0%
              #<compiled 0x14ed6cd>                                 4   0%
            + c-backward-token-2                                    3   0%
          + c-font-lock-enclosing-decls                           240   2%
          + #<compiled 0x150a5d1>                                 203   2%
          + c-font-lock-<>-arglists                               183   1%
          + c-font-lock-cut-off-declarators                       176   1%
          + color-identifiers:colorize                            140   1%
          + c-font-lock-raw-strings                                45   0%
          + c-font-lock-invalid-single-quotes                      37   0%
          + c-font-lock-enum-tail                                  34   0%
            #<compiled 0x150a4f1>                                  31   0%
            #<compiled 0x150a1cd>                                  29   0%
          + c-font-lock-complex-decl-prepare                       25   0%
            #<compiled 0x150a495>                                  24   0%
            #<compiled 0x150a57d>                                  22   0%
          + c-font-lock-c++-lambda-captures                        18   0%
            #<compiled 0x150a555>                                   9   0%
            #<compiled 0x150a535>                                   3   0%
            eval                                                    3   0%
            c-font-lock-enum-body                                   3   0%
         + font-lock-fontify-syntactically-region                  40   0%
        + c-before-context-fl-expand-region                       348   3%
 + eval                                                             9   0%
 + mode-line-default-help-echo                                      4   0%
- ...                                                            1411  14%
   Automatic GC                                                  1411  14%
+ command-execute                                                1252  12%
+ flycheck-handle-signal                                          301   3%
+ timer-event-handler                                              32   0%
+ evil-repeat-post-hook                                             5   0%
  global-highlight-symbol-mode-check-buffers                        5   0%
  evil--jump-hook                                                   1   0%





reply via email to

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