unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gregory@heytings.org, emacs-devel@gnu.org
Subject: Re: Major modes using `widen' is a good, even essential, programming practice.
Date: Mon, 8 Aug 2022 09:58:29 +0000	[thread overview]
Message-ID: <YvDeRdxCS9p9+aNS@ACM> (raw)
In-Reply-To: <83czdbwjfr.fsf@gnu.org>

Hello, Eli.

On Mon, Aug 08, 2022 at 05:36:08 +0300, Eli Zaretskii wrote:
> > Date: Sun, 7 Aug 2022 19:20:44 +0000
> > Cc: gregory@heytings.org, emacs-devel@gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > > > Either in the cache or in the buffer: the previous chunk was
> > > > > fontified, so its end has the font-lock-comment-face.  So you know.

> > > > No, you don't.  The buffer might be being opened by desktop in a large
> > > > comment in the middle of the file.

> > > You've changed the scenario, yes?

> > Yes.  We've got to deal with all scenarios, preferably without
> > special-caseing special cases.

> No one said that all the scenarios must have the same solution.

I suppose not, but optimising for different scenarios would be, well, an
optimisation.  Do we really need it.

> > > > What jit-lock/font-lock actually do at the moment is to widen, then use
> > > > syntax-ppss, i.e. in effect scan from BOB.

> > > Yes, and that's SLOOOWWWW!

> > On my machine, with an optimised build, it takes just under 20 ms to
> > parse-partial-sexp over xdisp.c (not counting any redisplay at the end).
> > I don't understand any more than Dmitry does, why your unoptimised build
> > is taking 25 times as long.

> It doesn't help to know that some very fast machine can do this stuff
> quickly enough to remain below the annoyance threshold.  20 ms is a
> very long time by the current CPU speed measure: just calculate the
> number of CPU cycles in that time and you will see it.

We're talking about 1.2 MB here.  That works out at less than 17 ns per
character.  Each round of the loop is a fairly sophisticated finite state
machine pass.  Possibly it could be optimised, but I doubt by very much.
Some things take a certain amount of time, and there's nothing we can do
about it.  (Of course we can do things about some other aspects.)

> > > > That "needing to go too far" is an instantaneous jump, not a scanning.

> > > Please tell that to someone who doesn't edit C sources as frequently
> > > as I do.

> > Are you saying that long strings and long comments cause a particular
> > slowdown in C Mode, not seen when strings and comments are all short?

> I don't know what makes it slow, but it feels sluggish in even the
> simplest editing operations, and font-lock updates are slow as well.

How about us opening a bug report for CC Mode's speed with
font-lock-maximum-decoration = 2?

> > > > The string start will be in a parse-partial-sexp result somewhere.
> > > > Sometimes people write long strings.  They certainly write long comments.

> > > Why do I have top suffer every day just because someone, somewhere,
> > > might do that?  I'd rather we "punish" those few people who do it
> > > (rarely).

> > I don't think we should punish people who write comments.  I'm thinking
> > of Gerd M., who was likely the writer of the comment at the beginning of
> > xdisp.c.

> We are still talking about long lines, yes?  There are no long lines
> in that commentary at the beginning of xdisp.c.

I don't think we were still talking about long lines.  We were talking
about parse-partial-sexp on large files.

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2022-08-08  9:58 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-06 20:13 Major modes using `widen' is a good, even essential, programming practice Alan Mackenzie
2022-08-06 21:05 ` Stefan Monnier
2022-08-07  6:03 ` Eli Zaretskii
2022-08-07 13:31 ` Gregory Heytings
2022-08-07 14:13   ` Alan Mackenzie
2022-08-07 14:20     ` Eli Zaretskii
2022-08-07 14:59       ` Alan Mackenzie
2022-08-07 15:13         ` Eli Zaretskii
2022-08-07 17:01           ` Alan Mackenzie
2022-08-07 17:23             ` Eli Zaretskii
2022-08-07 17:53               ` Dmitry Gutov
2022-08-07 18:00                 ` Eli Zaretskii
2022-08-07 18:05                   ` Dmitry Gutov
2022-08-07 18:37                     ` Eli Zaretskii
2022-08-07 23:02                       ` Stefan Monnier
2022-08-07 18:49                   ` Óscar Fuentes
2022-08-07 18:59                     ` Eli Zaretskii
2022-08-07 18:56                   ` Lars Ingebrigtsen
2022-08-07 19:20               ` Alan Mackenzie
2022-08-07 19:26                 ` Dmitry Gutov
2022-08-08  2:36                 ` Eli Zaretskii
2022-08-08  9:58                   ` Alan Mackenzie [this message]
2022-08-08 11:39                     ` Eli Zaretskii
2022-08-08 15:05                       ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Alan Mackenzie
2022-08-08 15:51                         ` Gregory Heytings
2022-08-08 16:05                           ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 16:50                             ` Gregory Heytings
2022-08-09 19:49                               ` Gregory Heytings
2022-08-08 17:15                         ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Eli Zaretskii
2022-08-08 17:41                           ` Eli Zaretskii
2022-08-08 18:41                             ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 18:51                               ` Eli Zaretskii
2022-08-08 19:09                                 ` Alan Mackenzie
2022-08-09  2:24                                   ` Eli Zaretskii
2022-08-09  8:00                                     ` Alan Mackenzie
2022-08-09 11:07                                       ` Eli Zaretskii
2022-08-09 11:24                                         ` Alan Mackenzie
2022-08-09 11:57                                           ` Eli Zaretskii
2022-08-09 16:36                                             ` Alan Mackenzie
2022-08-09 16:59                                               ` Eli Zaretskii
2022-08-09 17:43                                                 ` Alan Mackenzie
2022-08-09 17:55                                                   ` Eli Zaretskii
2022-08-10  0:22                                                     ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Lynn Winebarger
2022-08-10  2:14                                                       ` Po Lu
2022-08-10  2:42                                                         ` Eli Zaretskii
2022-08-10 10:05                                                           ` Lynn Winebarger
2022-08-10 10:49                                                             ` Po Lu
2022-08-10 11:31                                                             ` Eli Zaretskii
2022-08-12 12:37                                                               ` Lynn Winebarger
2022-08-12 12:50                                                                 ` Eli Zaretskii
2022-08-12 21:50                                                                   ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Stefan Monnier
2022-08-12 23:26                                                                     ` Lynn Winebarger
2022-08-13  2:11                                                                       ` Ideal performance of ELisp Stefan Monnier
2022-08-13 10:51                                                                         ` Lynn Winebarger
2022-08-13 11:13                                                                           ` Lynn Winebarger
2022-08-13 14:07                                                                           ` Stefan Monnier
2022-08-13 14:56                                                                             ` Lynn Winebarger
2022-08-16 16:46                                                                               ` Lynn Winebarger
2022-08-16 17:22                                                                                 ` Stefan Monnier
2022-08-17 12:41                                                                                   ` Lynn Winebarger
2022-08-17 14:04                                                                                     ` Stefan Monnier
2022-08-17 14:19                                                                                       ` Mattias Engdegård
2022-08-17 22:18                                                                                         ` Stefan Monnier
2022-08-17 14:25                                                                                       ` Lynn Winebarger
2022-08-13  4:39                                                                     ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Ihor Radchenko
2022-08-13  7:45                                                                       ` Ideal performance of ELisp Philip Kaludercic
2022-08-13 11:58                                                                         ` Ihor Radchenko
2022-08-13 14:15                                                                       ` Stefan Monnier
2022-08-14  9:25                                                                         ` Andrea Corallo
2022-08-14  9:34                                                                           ` Ihor Radchenko
2022-08-14 13:01                                                                             ` Eli Zaretskii
2022-08-16 19:23                                                                             ` Andrea Corallo
2022-08-14 13:01                                                                           ` Stefan Monnier
2022-08-16  8:59                                                                             ` Andrea Corallo
2022-08-16  9:50                                                                               ` Ihor Radchenko
2022-08-16 18:21                                                                                 ` Andrea Corallo
2022-08-17  9:48                                                                                   ` Ihor Radchenko
2022-08-17 12:02                                                                                     ` Eli Zaretskii
2022-08-16 15:06                                                                               ` Lynn Winebarger
2022-08-16 18:24                                                                                 ` Andrea Corallo
2022-08-17 13:04                                                                                   ` Lynn Winebarger
2022-08-17 14:18                                                                                     ` Andrea Corallo
2022-08-18 12:17                                                                                       ` Lynn Winebarger
2022-08-12 16:00                                                                 ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Akib Azmain Turja
2022-08-12 19:06                                                                   ` tomas
2022-08-13  4:41                                                                     ` Akib Azmain Turja
2022-08-13  5:14                                                                       ` tomas
2022-08-13 11:57                                                                   ` Lynn Winebarger
2022-08-13 14:28                                                                     ` Akib Azmain Turja
2022-08-14 19:24                                                         ` Eric Ludlam
2022-08-16 10:42                                                           ` Lynn Winebarger
2022-08-17  1:56                                                             ` Eric Ludlam
2022-08-10 17:03                                                       ` Tassilo Horn
2022-08-13 14:40                                                       ` Jostein Kjønigsen
2022-08-14  1:23                                                         ` Po Lu
2022-08-16  9:06                                                           ` Lynn Winebarger
2022-08-16 11:05                                                             ` Po Lu
2022-08-16 11:41                                                             ` Eli Zaretskii
2022-08-16 16:33                                                               ` Lynn Winebarger
2022-08-16 17:19                                                                 ` Stefan Monnier
2022-08-16 17:40                                                                   ` Lynn Winebarger
2022-08-17  1:41                                                                     ` Eric Ludlam
2022-08-18 12:34                                                                       ` Lynn Winebarger
2022-08-20 13:15                                                                         ` Eric Ludlam
2022-08-08 18:20                           ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-07 20:17     ` Major modes using `widen' is a good, even essential, programming practice Gregory Heytings
2022-08-07 20:46       ` Alan Mackenzie
2022-08-07 20:53         ` Gregory Heytings
2022-08-08  2:37         ` Eli Zaretskii
2022-08-08 10:33           ` Alan Mackenzie
2022-08-08 11:41             ` Eli Zaretskii
2022-08-07 23:21     ` Stefan Monnier
2022-08-08  2:29       ` Eli Zaretskii
2022-08-08  9:25         ` Stefan Monnier
2022-08-08 11:16           ` Lynn Winebarger
2022-08-08 11:47             ` Eli Zaretskii
2022-08-08 14:24               ` Lynn Winebarger
2022-08-08 11:30           ` Eli Zaretskii
2022-08-08 12:05             ` Stefan Monnier
2022-08-08 12:40               ` Eli Zaretskii
2022-08-08 17:22                 ` Stefan Monnier
2022-08-08 17:34                   ` Eli Zaretskii
2022-08-08 21:16             ` Dmitry Gutov
2022-08-09 11:30               ` Eli Zaretskii
2022-08-09 14:38                 ` Dmitry Gutov
2022-08-09 16:12                   ` Eli Zaretskii
2022-08-09 16:52                     ` Dmitry Gutov
2022-08-09 17:05                       ` Eli Zaretskii
2022-08-09 18:52                         ` Dmitry Gutov
2022-08-09 19:46                           ` Gregory Heytings
2022-08-08 10:38       ` Alan Mackenzie
2022-08-08 11:49         ` Eli Zaretskii
2022-08-08 10:41       ` Gregory Heytings
2022-08-07 17:57 ` Dmitry Gutov
2022-08-22 11:26   ` Alan Mackenzie
2022-08-22 23:59     ` Dmitry Gutov

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=YvDeRdxCS9p9+aNS@ACM \
    --to=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=gregory@heytings.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).