emacs-devel
[Top][All Lists]
Advanced

[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?

No.

> 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,
however.

> 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]