jit-lock 기능 끊기 emacs

jit-lock 기능 끊기 emacs

jit-lock 기능은 CPU를 너무 많이 소모하고 Emacs를 자주 끊습니다. 누구든지 같은 문제를 겪었습니까? 이 문제를 해결하는 방법은 무엇입니까?

OS는 Archlinux x64, CPU intel i7 4790, 16GB RAM입니다. 시스템 서비스를 제외하고 emacs만 실행 중입니다.

감사해요!

프로파일러 보고서는 다음을 제공합니다.

- 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%

답변1

손가락질이 약간 잘못되었습니다. 89%의 시간이 에 소비되었지만 jit-lock-function이 모든 시간도 에 소비되었습니다 c-font-lock-fontify-region( 에서 간접적으로 호출됨 jit-lock-function).

따라서 문제는 jit-lock이 아닌 c-font-lock에 있습니다.

를 통해 이를 버그로 신고해 주세요 M-x report-emacs-bug. 아마도 그것이 나타나는 버퍼의 내용에 대한 세부 정보를 제공하고 싶을 것입니다(C++ 파일이라고 가정하겠습니다).

이것이 26.3보다 오래된 Emacs를 사용하는 경우 버그를 보고하기 전에 Emacs-26.3으로 시도해 볼 가치가 있을 것입니다. C++ 모드의 글꼴 잠금 성능이 수년에 걸쳐 정기적으로 개선되었기 때문입니다.

관련 정보