From: Alan Mackenzie <acm@muc.de>
To: 59738@debbugs.gnu.org
Subject: bug#59738: c-ts-mode is slow with large buffers.
Date: Thu, 1 Dec 2022 11:50:05 +0000 [thread overview]
Message-ID: <Y4iU7VdA/GkvRfxG@ACM> (raw)
Hello, Emacs.
In an up to date (2022-11-30) master started as $ emacs --no-desktop:
The file .../drivers/gpu/drm/amd/include/asic_reg/dce/dce_12_0_sh_mask.h
in the Linux source tree is 6.8 MB big, consisting of a large number of
#defines and comments, but nothing else.
To scroll through it in c-ts-mode takes a little over 26 minutes on my
system. By comparison, in C Mode it takes 31 seconds. There would
appear to be a need for some optimisation in c-ts-mode, here.
The file
https://gitlab.com/wireshark/wireshark/-/raw/master/epan/dissectors/packet-rrc.c
(see bug #45248) (10 MB) takes 578 seconds to scroll in c-ts-mode. It
scrolls through the first 83% of the buffer rapidly, then chokes on a big
brace block initialisation. Also, the font-locking fails part way
through this brace block (without any apparent speed up).
For comparison, the scrolling takes 30 seconds in C Mode. There seems to
be a need for optimisation of c-ts-mode in this case, too.
For completeness, I used M-: (time-scroll) in the following for the
timings:
(defmacro time-it (&rest forms)
"Time the running of a sequence of forms using `float-time'.
Call like this: \"M-: (time-it (foo ...) (bar ...) ...)\"."
`(let ((start (float-time)))
,@forms
(- (float-time) start)))
(defun time-scroll (&optional arg)
(interactive "P")
(message "%s"
(time-it
(condition-case nil
(while t
(if arg (scroll-down) (scroll-up))
(sit-for 0))
(error nil)))))
--
Alan Mackenzie (Nuremberg, Germany).
next reply other threads:[~2022-12-01 11:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-01 11:50 Alan Mackenzie [this message]
2022-12-03 10:37 ` bug#59738: c-ts-mode is slow with large buffers Yuan Fu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-07 4:56 ` Yuan Fu
2022-12-07 17:23 ` Eli Zaretskii
2022-12-08 0:40 ` Yuan Fu
2022-12-08 20:37 ` Eli Zaretskii
2022-12-10 21:34 ` Alan Mackenzie
2022-12-10 23:14 ` Yuan Fu
2022-12-11 7:25 ` Eli Zaretskii
2022-12-11 13:22 ` Alan Mackenzie
2022-12-11 16:38 ` Dmitry Gutov
2022-12-11 6:45 ` Eli Zaretskii
2022-12-11 17:13 ` Alan Mackenzie
2022-12-11 17:38 ` Eli Zaretskii
2022-12-11 18:39 ` Alan Mackenzie
2022-12-11 19:14 ` Eli Zaretskii
2022-12-13 1:20 ` Stefan Kangas
2022-12-07 14:34 ` Eli Zaretskii
2022-12-07 14:58 ` Eli Zaretskii
2022-12-07 15:46 ` Alan Mackenzie
2023-01-07 23:08 ` Yuan Fu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y4iU7VdA/GkvRfxG@ACM \
--to=acm@muc.de \
--cc=59738@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).