![JIT-Lock-Funktion, Auflegen, Emacs](https://rvso.com/image/1711472/JIT-Lock-Funktion%2C%20Auflegen%2C%20Emacs.png)
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-function
aber 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.