[Top][All Lists]

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

Re: CC Mode with font-lock-maximum-decoration 2

From: Alan Mackenzie
Subject: Re: CC Mode with font-lock-maximum-decoration 2
Date: Mon, 8 Aug 2022 18:41:01 +0000

On Mon, Aug 08, 2022 at 20:41:37 +0300, Eli Zaretskii wrote:
> > Date: Mon, 08 Aug 2022 20:15:25 +0300
> > From: Eli Zaretskii <eliz@gnu.org>
> > Cc: emacs-devel@gnu.org

> > > For this measurement, I started with subr.el, and appended copies of it
> > > to itself, then took functions off the end, to make it the same size as
> > > xdisp.c.  xdisp.c is 1209233 bytes, my .el buffer was 1209371 bytes.

> > > I used M-: (benchmark-run 1 (time-scroll-b)) on each buffer, with:

> > >     (defun time-scroll-b (&optional arg)    ; For use in `benchmark-run'.
> > >       (condition-case nil
> > >           (while t
> > >             (if arg (scroll-down) (scroll-up))
> > >             (sit-for 0))
> > >         (error nil)))

> > > ..  The exact results were:
> > > (xdisp.c): (5.7370774540000005 9 0.7672129740000013)
> > > (elisp):   (4.1201735589999995 5 0.42918214299999846).

> > > This was, of course, on an optimised build on GNU/Linux using the Linux
> > > console, both measurements starting at BOB, having typed and deleted a
> > > character to erase existing font-locking.

> > Editing source code is more than just scrolling through the text and
> > getting it fontified, though.  For realistic measurements, you need to
> > emulate and time a typical mix of editing operations.

> And btw, I'm not sure I understand what you are saying.  Are you
> saying that level 2 is enough for fontifications in C mode?


> If so, what are we losing when compared to the value t, and if we don't
> lose anything important, why do we need any fontifications beyond what
> level 2 gives us?

We lose accuracy.  That is important to a lot of people, including the
many who have sent in bug reports because of lack of accuracy.

> And what about the value nil instead of 2?

I haven't tried that, yet.

> IOW, if you are saying that you consider level 2 to be the recommended
> level for C sources, why didn't we make that change long ago?

I'm not saying that.  I think, on balance, most users prefer the accuracy
of level 3 to the speed of level 2.  I've got no real evidence for that,

> For Lisp, btw, the difference between level 2 and t is negligible.
> And the same goes for most/all other modes, which is the reason why we
> have set the value to t years ago.  I'm quite sure at that time the
> difference between 2 and t for C mode was also very small.

Martin Stjernholm wrote (what has become) the current level 3 around 20
years ago, noting specifically it was expected to be slower than before,
and that the new level 2 was comparable in both speed and accuracy to the
old level 3.  Since then level 3 has become considerably more accurate
and quite a bit slower, too.

My impression of those times was that the old level 3 was just incapable
of being amended to satisfy users' demands for accurate fontification.
Again, I'd have to check old CC Mode bug list archives to be sure.

Alan Mackenzie (Nuremberg, Germany).

reply via email to

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