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

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

bug#33887: 26.1; Emacs hangs for several seconds when going to the end o


From: Stefan Monnier
Subject: bug#33887: 26.1; Emacs hangs for several seconds when going to the end of an XML file in nXML mode
Date: Thu, 27 Dec 2018 11:39:06 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

>> When I open a large XML file and immediately go to the end of the
>> file with '<ESC> >', Emacs hangs for several seconds. For instance,
>> on /usr/share/xml/iso-codes/iso_639-3.xml from iso-codes in Debian
>> (a 1-MB file), it takes 5 seconds. On a 4-MB personal XML file, it
>> takes 15 seconds.
>> 
>> This is a regression: Emacs 25 did not hang at all.
>
> Confirmed, thanks.
>
> The profile (see below) blames syntax-ppss called by
> sgml-syntax-propertize, so I suspect commit 0055190, which added
> sgml-syntax-propertize-inside to sgml-syntax-propertize.

Sounds right, but I'm not sure what to do about this.
I don't wonder why so much time is passed on syntax-ppss, which is
generally expected to be relatively fast.
Maybe sgml-syntax-propertize is called too often (I see it's mostly
called from skip-syntax-forward; maybe we should call syntax-propertize
explicitly beforehand with a more distant position so
sgml-syntax-propertize is called just once).


        Stefan


> Here's the profile:
>
>   - command-execute                                                 532  77%
>    - call-interactively                                             532  77%
>     - funcall-interactively                                         522  75%
>      - end-of-buffer                                                500  72%
>       - recenter                                                    496  71%
>        - jit-lock-function                                          496  71%
>       - jit-lock-fontify-now                                      496  71%
>        - jit-lock--run-functions                                  496  71%
>         - run-hook-wrapped                                        496  71%
>          - #<compiled 0x200000000b3a7fd0>                         496  71%
>           - font-lock-fontify-region                              496  71%
>            - font-lock-default-fontify-region                     496  71%
>             - nxml-extend-region                                  496  71%
>              - skip-syntax-forward                                496  71%
>               - internal--syntax-propertize                       496  71%
>                - syntax-propertize                                496  71%
>                 - sgml-syntax-propertize                          490  71%
>                    syntax-ppss                                    445  64%
>       push-mark                                                     1   0%
>      - find-file                                                     20   2%
>       - find-file-noselect                                           20   2%
>        - find-file-noselect-1                                        19   2%
>       - after-find-file                                            17   2%
>        - normal-mode                                               17   2%
>         - set-auto-mode                                            17   2%
>          - set-auto-mode-0                                         17   2%
>           - xml-mode                                               17   2%
>            - byte-code                                             14   2%
>             - require                                              12   1%
>              - byte-code                                           11   1%
>               - require                                            10   1%
>                - byte-code                                          9   1%
>                 - require                                           6   0%
>                  - byte-code                                        6   0%
>                   - cl-generic-define-method                        4   0%
>                    - cl--generic-make-function                      4   0%
>                     - cl--generic-make-next-function                  4   0%
>                      - cl--generic-get-dispatcher                   4   0%
>                       - byte-compile                                3   0%
>                          byte-code                                  1   0%
>                        - #<compiled 0x200000000b325048>                  1   
> 0%
>                           byte-compile-top-level                    1   0%
>                 - custom-declare-variable                           1   0%
>                  - custom-initialize-reset                          1   0%
>                   - eval                                            1   0%
>                    - funcall                                        1   0%
>                     - #<compiled 0x200000000b3c88b8>                  1   0%
>                      - executable-find                              1   0%
>                         locate-file                                 1   0%
>                file-truename                                        1   0%
>            - rng-nxml-mode-init                                     2   0%
>             - rng-validate-mode                                     2   0%
>              - rng-auto-set-schema                                  2   0%
>               - rng-locate-schema-file                              2   0%
>                - rng-locate-schema-file-using                       2   0%
>                 - rng-get-parsed-schema-locating-file                  2   0%
>                  - rng-parse-schema-locating-file                   1   0%
>                   - rng-parse-validate-file                         1   0%
>                    - nxml-parse-instance                            1   0%
>                       nxml-parse-instance-1                         1   0%
>            - file-truename                                          1   0%
>             - file-truename                                         1   0%
>              - file-truename                                        1   0%
>                 file-truename                                       1   0%
>       - insert-file-contents                                        1   0%
>          xml-find-file-coding-system                                1   0%
>      - execute-extended-command                                       1   0%
>       - sit-for                                                       1   0%
>        redisplay                                                    1   0%
>      - minibuffer-complete                                            1   0%
>       - completion-in-region                                          1   0%
>        - completion--in-region                                        1   0%
>       - #<compiled 0x2000000001b04c20>                              1   0%
>        - apply                                                      1   0%
>         - #<compiled 0x20000000013baac8>                            1   0%
>          - completion--in-region-1                                  1   0%
>           - completion--do-completion                               1   0%
>            - completion-try-completion                              1   0%
>             - completion--nth-completion                            1   0%
>              - completion--some                                     1   0%
>               - #<compiled 0x2000000001b0bd20>                      1   0%
>                - completion-basic-try-completion                    1   0%
>                 - try-completion                                    1   0%
>                    completion-file-name-table                       1   0%
>     - byte-code                                                      10   1%
>      - read-extended-command                                          9   1%
>       - completing-read                                               9   1%
>        - completing-read-default                                      9   1%
>         read-from-minibuffer                                        9   1%
>      - find-file-read-args                                            1   0%
>       - read-file-name                                                1   0%
>        - read-file-name-default                                       1   0%
>       - completing-read                                             1   0%
>        - completing-read-default                                    1   0%
>         - read-from-minibuffer                                      1   0%
>          - redisplay_internal (C function)                          1   0%
>             find-image                                              1   0%
>   - ...                                                             158  22%
>      Automatic GC                                                   156  22%
>    - macroexp--all-forms                                              1   0%
>     - macroexp--expand-all                                            1   0%
>      - #<compiled 0x2000000001375130>                                 1   0%
>       - macroexp--all-forms                                           1   0%
>        - macroexp--expand-all                                         1   0%
>       - macroexp--all-forms                                         1   0%
>        - macroexp--expand-all                                       1   0%
>         - #<compiled 0x2000000001375130>                            1   0%
>          - macroexp--all-forms                                      1   0%
>           - macroexp--expand-all                                    1   0%
>            - #<compiled 0x2000000001375068>                         1   0%
>             - macroexp--all-forms                                   1   0%
>              - macroexp--expand-all                                 1   0%
>               - macroexp-macroexpand                                1   0%
>                - macroexpand                                        1   0%
>                   #<compiled 0x20000000013f0600>                    1   0%
>    - rng-compute-start-tag-open-deriv                                 1   0%
>     - rng-element-get-child                                           1   0%
>      - rng-compile                                                    1   0%
>       - apply                                                         1   0%
>        - rng-compile-group                                            1   0%
>       - mapcar                                                      1   0%
>        - rng-compile                                                1   0%
>         - apply                                                     1   0%
>          - rng-compile-attribute                                    1   0%
>           - rng-compile                                             1   0%
>            - apply                                                  1   0%
>             - rng-compile-ref                                       1   0%
>              - rng-compile                                          1   0%
>               - apply                                               1   0%
>                - rng-compile-data                                   1   0%
>                   rng-compile-dt                                    1   0%





reply via email to

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