JIT-Lock-Funktion, Auflegen, Emacs

JIT-Lock-Funktion, Auflegen, Emacs

Die Jit-Lock-Funktion verbraucht zu viel CPU und lässt meinen Emacs häufig hängen. Hat jemand das gleiche Problem? Wie kann man das lösen?

Das Betriebssystem ist Archlinux x64, CPU Intel i7 4790, 16 GB RAM. Außer den Systemdiensten läuft nur Emacs.

Danke!

Der Profiler-Bericht gibt Folgendes an:

- redisplay_internal (C function)                                2728  90%
 - jit-lock-function                                             2724  89%
  - jit-lock-fontify-now                                         2724  89%
   - jit-lock--run-functions                                     2724  89%
    - run-hook-wrapped                                           2724  89%
     - #<compiled 0x40f2001>                                     2724  89%
      - font-lock-fontify-region                                 2724  89%
       - c-font-lock-fontify-region                              2724  89%
        - font-lock-default-fontify-region                       2716  89%
         - font-lock-fontify-keywords-region                     2712  89%
          - c-font-lock-declarations                             1932  63%
           - c-find-decl-spots                                   1912  63%
            - #<compiled 0x22af545>                              1148  37%
             - c-get-fontification-context                        732  24%
              - c-looking-at-or-maybe-in-bracelist                504  16%
               + c-backward-token-2                               472  15%
              - c-back-over-member-initializers                   108   3%
               + c-back-over-compound-identifier                   56   1%
               + c-parse-state                                     32   1%
                 c-backward-sws                                     8   0%
              + c-back-over-compound-identifier                    68   2%
              + c-backward-token-2                                 16   0%
                c-backward-sws                                      4   0%
             + c-forward-decl-or-cast-1                           240   7%
             + c-forward-label                                     60   1%
             + c-backward-token-2                                  16   0%
             + c-backward-sws                                      12   0%
             + c-font-lock-single-decl                              8   0%
               c-syntactic-re-search-forward                        4   0%
            + c-bs-at-toplevel-p                                  672  22%
            + c-beginning-of-macro                                 28   0%
              c-forward-sws                                         8   0%
              c-backward-token-2                                    4   0%
            c-font-lock-<>-arglists                               304  10%
          + #<compiled 0x22b6359>                                  92   3%
            #<compiled 0x22b6381>                                  68   2%
            #<compiled 0x22b5fbd>                                  32   1%
            #<compiled 0x22b62b9>                                  32   1%
            #<compiled 0x22b625d>                                  28   0%
            #<compiled 0x22b62fd>                                  28   0%
            #<compiled 0x22b631d>                                  28   0%
            #<compiled 0x22b63d5>                                   8   0%
          + c-font-lock-enclosing-decls                             4   0%
            c-font-lock-enum-body                                   4   0%
            #<compiled 0x22b6669>                                   4   0%
           font-lock-fontify-syntactically-region                   4   0%
        + c-before-context-fl-expand-region                         8   0%

Antwort1

Ihr Fingerzeig ist etwas daneben: 89 % der Zeit werden in verbracht, jit-lock-functionaber die gesamte Zeit wird auch in verbracht c-font-lock-fontify-region(indirekt von aufgerufen jit-lock-function).

Ihr Problem liegt also eher bei c-font-lock als bei jit-lock.

Bitte melden Sie dies als Fehler über M-x report-emacs-bug. Sie möchten wahrscheinlich Details zum Inhalt des Puffers angeben, in dem es erscheint (ich gehe davon aus, dass es sich um eine C++-Datei handelt).

Wenn dies bei einem Emacs der Fall ist, der älter als 26.3 ist, lohnt es sich wahrscheinlich, es mit Emacs-26.3 auszuprobieren, bevor der Fehler gemeldet wird, da die Font-Lock-Leistung im C++-Modus im Laufe der Jahre regelmäßig verbessert wurde.

verwandte Informationen