GNU bug report logs -
#59738
c-ts-mode is slow with large buffers.
Previous Next
Reported by: Alan Mackenzie <acm <at> muc.de>
Date: Thu, 1 Dec 2022 11:51:02 UTC
Severity: normal
Done: Yuan Fu <casouri <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #23 received at 59738 <at> debbugs.gnu.org (full text, mbox):
> Cc: 59738 <at> debbugs.gnu.org
> From: Yuan Fu <casouri <at> gmail.com>
> Date: Tue, 6 Dec 2022 20:56:13 -0800
>
>
> Alan Mackenzie <acm <at> muc.de> writes:
>
> > 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.
> >[...]
> Ah, the lovely packet-rrc.c file.
No, this is a different file, dce_12_0_sh_mask.h. It is a header file
which only has preprocessor #define lines. I'm puzzled why this
presents such a great difficulty for tree-sitter. Could you take a
look what happens with that file?
> We had some discussion of it in
> bug#59415, basically it contains some syntax that screws tree-sitter up.
> The block initialization you see makes tree-sitter into erroneously
> generating a very tall tree: it recognizes all the opening bracket and
> ignores (almost) all the closing brackets. That causes operations on the
> tree to be much much slower than it normally is.
Right, but with a long series of #define lines there should be no
parse tree at all...
This bug report was last modified 2 years and 137 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.