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

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

bug#10149: Emacs 24 hangs for several minutes with very large c++ files


From: Eli Zaretskii
Subject: bug#10149: Emacs 24 hangs for several minutes with very large c++ files
Date: Sat, 02 Nov 2019 09:31:47 +0200

> From: Stefan Kangas <stefan@marxist.se>
> Date: Sat, 02 Nov 2019 00:14:44 +0100
> Cc: Alan Mackenzie <acm@muc.de>, 10149@debbugs.gnu.org
> 
> > [1] The large chunk of commented text in the attached file
> 
> I do see a significant slowdown in navigating the file once I comment
> out the block of code.  It doesn't hang for several minutes for me,
> but it takes 5-10 seconds for C-v, M-v depending on where point is.
> 
> Alan, any comments on this?

The OP doesn't make it clear, and it took me some seconds to realize,
that to see the problem, one needs to _un_comment the commented chunk.

Here's the profile for paging through that part with C-v.  As is
clearly visible, the culprit is c-font-lock-single-decl.

- command-execute                                                9167  72%
 - call-interactively                                            9167  72%
  - funcall-interactively                                        9164  72%
   - scroll-up-command                                           9162  72%
    - scroll-up                                                  9125  71%
     - jit-lock-function                                         9124  71%
      - jit-lock-fontify-now                                     9124  71%
       - jit-lock--run-functions                                 9123  71%
        - run-hook-wrapped                                       9123  71%
         - #<compiled -0x1ffffffff85fe718>                       9123  71%
          - font-lock-fontify-region                             9123  71%
           - c-font-lock-fontify-region                          9123  71%
            - font-lock-default-fontify-region                   9014  71%
             - font-lock-fontify-keywords-region                 9003  70%
              - c-font-lock-declarations                         8645  68%
               - c-find-decl-spots                               8640  68%
                - #<compiled -0x1ffffffff9680598>                8579  67%
                 - c-font-lock-single-decl                       8453  66%
                  - c-font-lock-declarators                        39   0%
                   - c-do-declarators                              38   0%
                    - c-forward-declarator                         30   0%
                     - c-syntactic-re-search-forward                 14   0%
                        c-beginning-of-macro                        8   0%
                     - c-forward-name                               3   0%
                        c-forward-sws                               1   0%
                     - c-backward-sws                               1   0%
                        c-beginning-of-current-token                  1   0%
                      #<compiled -0x1ffffffff9680fb0>                  2   0%
                      c-forward-sws                                 1   0%
                    c-backward-sws                                  1   0%
                    c-fontify-recorded-types-and-refs                  1   0%
                 - c-forward-decl-or-cast-1                        98   0%
                  - c-forward-type                                 62   0%
                   - c-forward-name                                21   0%
                      c-forward-sws                                 7   0%
                   - c-check-qualified-type                        10   0%
                    - c-forward-over-compound-identifier                  8   0%
                     - c-forward-over-token                         6   0%
                        c-forward-sws                               3   0%
                       c-forward-sws                                1   0%
                       c-on-identifier                              1   0%
                   - c-add-type                                     4   0%
                    - c-syntactic-content                           4   0%
                       c-forward-sws                                2   0%
                     c-forward-keyword-clause                       2   0%
                     #<compiled -0x1ffffffff9736820>                  1   0%
                     #<compiled -0x1ffffffff8c38b48>                  1   0%
                     c-forward-sws                                  1   0%
                  - c-forward-name                                  6   0%
                     c-forward-sws                                  1   0%
                  - c-backward-token-2                              4   0%
                     c-backward-sws                                 3   0%
                     c-beginning-of-current-token                   1   0%
                  - c-backward-sws                                  3   0%
                     c-beginning-of-current-token                   2   0%
                    c-forward-sws                                   1   0%
                 - c-backward-sws                                  10   0%
                  - c-beginning-of-macro                            8   0%
                     back-to-indentation                            3   0%
                 - c-backward-token-2                               2   0%
                    c-backward-sws                                  2   0%
                - c-bs-at-toplevel-p                               42   0%
                 - c-brace-stack-at                                39   0%
                  - c-update-brace-stack                           39   0%
                     c-syntactic-re-search-forward                 38   0%
                  c-beginning-of-macro                              7   0%
                  c-forward-sws                                     4   0%
                c-font-lock-<>-arglists                            87   0%
              - c-font-lock-cut-off-declarators                    68   0%
               - c-back-over-member-initializers                   46   0%
                - c-parse-state                                    44   0%
                 - c-parse-state-1                                 44   0%
                  - c-append-to-state-cache                        28   0%
                   - c-beginning-of-macro                           1   0%
                      back-to-indentation                           1   0%
                  - c-remove-stale-state-cache                     16   0%
                   - c-beginning-of-macro                           1   0%
                      #<compiled -0x1ffffffff8c48290>                  1   0%
                  c-backward-sws                                    1   0%
               - c-determine-limit                                 20   0%
                - c-semi-pp-to-literal                             11   0%
                   c-restore-string-fences                          1   0%
               - c-syntactic-skip-backward                          1   0%
                - c-beginning-of-macro                              1   0%
                   back-to-indentation                              1   0%
              - c-font-lock-complex-decl-prepare                   61   0%
               - c-parse-state                                     59   0%
                - c-parse-state-1                                  59   0%
                   c-append-to-state-cache                         31   0%
                 - c-remove-stale-state-cache-backwards                 18   0%
                  - c-state-literal-at                              4   0%
                     c-state-pp-to-literal                          3   0%
                   - c-state-safe-place                             1   0%
                      c-state-pp-to-literal                         1   0%
                    c-state-balance-parens-backwards                  1   0%
                   c-remove-stale-state-cache                       9   0%
                 c-backward-sws                                     1   0%
               - c-beginning-of-macro                               1   0%
                  back-to-indentation                               1   0%
              - c-font-lock-enclosing-decls                        45   0%
               - c-parse-state                                     35   0%
                - c-parse-state-1                                  33   0%
                   c-append-to-state-cache                         22   0%
                   c-remove-stale-state-cache                      11   0%
                - c-beginning-of-macro                              1   0%
                   back-to-indentation                              1   0%
                 c-determine-limit                                  9   0%
               - c-syntactic-skip-backward                          1   0%
                  c-beginning-of-macro                              1   0%
              - c-font-lock-enum-tail                              35   0%
               - c-parse-state                                     23   0%
                - c-parse-state-1                                  22   0%
                   c-append-to-state-cache                         15   0%
                   c-remove-stale-state-cache                       6   0%
                - c-beginning-of-macro                              1   0%
                   back-to-indentation                              1   0%
               - c-backward-over-enum-header                       12   0%
                - c-backward-typed-enum-colon                       6   0%
                 - c-backward-token-2                               6   0%
                  - c-backward-sws                                  1   0%
                     c-beginning-of-current-token                   1   0%
                - c-backward-token-2                                4   0%
                 - c-backward-sws                                   3   0%
                  - c-beginning-of-macro                            2   0%
                     back-to-indentation                            2   0%
                    c-beginning-of-current-token                    1   0%
                  c-on-identifier                                   1   0%
              - #<compiled -0x1ffffffff8d285c8>                    31   0%
               - c-beginning-of-decl-1                             18   0%
                - c-beginning-of-statement-1                       16   0%
                 - c-crosses-statement-barrier-p                    7   0%
                    c-forward-sws                                   3   0%
                    c-literal-limits                                1   0%
                 - c-backward-sws                                   5   0%
                  - c-beginning-of-macro                            1   0%
                     back-to-indentation                            1   0%
                   c-beginning-of-macro                             1   0%
                - c-syntactic-re-search-forward                     1   0%
                   c-beginning-of-macro                             1   0%
               - c-determine-limit                                 11   0%
                - c-backward-sws                                    2   0%
                   c-beginning-of-macro                             1   0%
                - c-semi-pp-to-literal                              1   0%
                   c-semi-get-near-cache-entry                      1   0%
              - c-font-lock-raw-strings                             4   0%
               - c-semi-pp-to-literal                               4   0%
                  c-restore-string-fences                           1   0%
              - c-font-lock-invalid-single-quotes                   4   0%
               - c-literal-limits                                   2   0%
                  c-full-pp-to-literal                              2   0%
                #<compiled -0x1ffffffff8d28718>                     4   0%
                #<compiled -0x1ffffffff8d28948>                     3   0%
                #<compiled -0x1ffffffff8d28fb0>                     3   0%
                #<compiled -0x1ffffffff8d287b8>                     2   0%
                #<compiled -0x1ffffffff8d28ad8>                     2   0%
                c-font-lock-enum-body                               1   0%
                #<compiled -0x1ffffffffa13eaf0>                     1   0%
             - font-lock-fontify-syntactically-region                 11   0%
                syntax-ppss                                         7   0%
            - c-before-context-fl-expand-region                   108   0%
             - mapc                                               108   0%
              - #<compiled -0x1ffffffff8d25220>                   108   0%
               - c-context-expand-fl-region                       108   0%
                - c-fl-decl-end                                    79   0%
                 - c-slow-enclosing-c++-attribute                  74   0%
                  - c-parse-state                                  74   0%
                   - c-parse-state-1                               73   0%
                      c-append-to-state-cache                      50   0%
                    - c-remove-stale-state-cache                   17   0%
                     - c-beginning-of-macro                         2   0%
                        #<compiled -0x1ffffffff8c48290>                  1   0%
                    - c-parse-state-get-strategy                    5   0%
                     - c-get-fallback-scan-pos                      5   0%
                      - beginning-of-defun                          5   0%
                         beginning-of-defun-raw                     5   0%
                      c-beginning-of-macro                          1   0%
                   - c-beginning-of-macro                           1   0%
                      #<compiled -0x1ffffffff8c48290>                  1   0%
                 - c-literal-start                                  2   0%
                    c-semi-pp-to-literal                            2   0%
                   c-beginning-of-macro                             1   0%
                   c-on-identifier                                  1   0%
                   c-backward-sws                                   1   0%
                - c-fl-decl-start                                  29   0%
                 - c-determine-limit                               13   0%
                  - c-semi-pp-to-literal                            2   0%
                   - #<compiled -0x1ffffffff8c41948>                  1   0%
                      c-clear-string-fences                         1   0%
                    c-backward-sws                                  1   0%
                   c-literal-start                                  2   0%
                   c-syntactic-skip-backward                        1   0%
            - #<compiled -0x1ffffffff8d25120>                       1   0%
               c-clear-string-fences                                1   0%
     - eval                                                         1   0%
        if                                                          1   0%
   - execute-extended-command                                       2   0%
    - sit-for                                                       2   0%
     - redisplay                                                    1   0%
      - redisplay_internal (C function)                             1   0%
       - find-image                                                 1   0%
          image-search-load-path                                    1   0%
  - byte-code                                                       3   0%
   - read-extended-command                                          3   0%
    - completing-read                                               3   0%
     - completing-read-default                                      3   0%
        read-from-minibuffer                                        1   0%
+ redisplay_internal (C function)                                3078  24%
+ ...                                                             437   3%





reply via email to

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