all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] comment-cache 223d16f 2/3: Apply `comment-depth' text properties when calling `back_comment'.
Date: Mon, 14 Mar 2016 12:51:37 +0000	[thread overview]
Message-ID: <20160314125137.GD1894@acm.fritz.box> (raw)
In-Reply-To: <jwvk2l6atu9.fsf-monnier+gmane.emacs.devel@gnu.org>

Hello, Stefan.

On Sun, Mar 13, 2016 at 06:49:53PM -0400, Stefan Monnier wrote:
> > In branch comment-cache, on a fully fontified, and fully cached xdisp.c
> > buffer, there are 55786 intervals with ~557860 conses, that's an extra
> > 512 intervals, or less than 1%.  There are an extra ~115668 conses,
> > about an extra 25%.  I'll admit this is a drawback.

> There's also the extra cost of applying all those text-properties ....

I've just timed this over xdisp.c.  A parse-partial-sexp from
(point-min) to (point-max) took 0.031s.  A further scan, applying the
`literal-cache' properties, took 0.054s.  That's 0.023s on a 1 MByte
buffer.  That's not too serious.

> .... plus the cost of slowing down application of other
> text-properties (since every time we modify intervals, we have to play
> with the lists of properties of the intervals involved), plus the cost
> of slowing down all lookups of other text-properties.

I imagine the cost of consing over three properties rather than just two
in an interval's plist will be negligible.  The impact of the extra
intervals will also be small.  Heck, we use two whole properties for
font-locking, and nobody notices any slow downs that causes.  One
implementation possibility would be to put `literal-cache' properties on
a distinct interval tree from text properties, thus speeding up both,
but it doesn't seem needed as yet.

> These were some of the reasons which made me choose a separate table for
> syntax-ppss rather than using text-properties.

OK.

> This said, I don't think it matters much.  FWIW, syntax-ppss uses a very
> naive singly-linked list for the simple reason that I decided to "first
> get something working", and I just haven't found a need to go back and
> optimize this data-structure (which could be turned into a tree or even
> an array, in case it mattered).

> Another motivation to go with a separate table was that I figured
> I would then be able to more easily manipulate the cache, e.g. in case
> I wanted to keep several versions of the cache at the same time (e.g. one
> version per syntax-table value being used, or one version per value of
> `point-min').  But there again, I haven't had the need to go back and
> add that kind of functionality yet.

> IOW, I don't think the exact representation chosen matters much.

> What I do think is a pity in your implementation (thinking of it as
> a potential replacement for syntax-ppss) is that it has to do all the
> hard work of computing a full "parse-partial-sexp state" (aka PPSS) and
> then throws away the parenthesis part of the state to only keep the
> string/comment part, making it unable to provide as much info as
> syntax-ppss does, even though it had to work just as hard for it.

Retaining all the information would be much harder and much more
resource intensive.  That why I said the comment-cache implementation is
for a different purpose from syntax-ppss.

syntax-ppss throws away a lot more information that comment-cache does -
it retains a parse state only every 20,000 characters, discarding
everything else between those points.  This makes its cache unsuitable
for using the way I'd like to in back_comment.

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2016-03-14 12:51 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160308132530.861.91488@vcs.savannah.gnu.org>
     [not found] ` <E1adHdj-0000FI-0W@vcs.savannah.gnu.org>
2016-03-08 14:19   ` [Emacs-diffs] comment-cache 223d16f 2/3: Apply `comment-depth' text properties when calling `back_comment' Stefan Monnier
2016-03-08 18:30     ` Alan Mackenzie
2016-03-08 18:42       ` Stefan Monnier
2016-03-08 20:07         ` Alan Mackenzie
2016-03-08 21:22           ` Dmitry Gutov
2016-03-08 21:43             ` Alan Mackenzie
2016-03-09  0:17           ` Stefan Monnier
2016-03-09  1:54             ` Stefan Monnier
2016-03-09 10:49             ` Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.] Alan Mackenzie
2016-03-09 13:11               ` Stefan Monnier
2016-03-09 14:19                 ` Alan Mackenzie
2016-03-09 19:16                   ` Stefan Monnier
2016-03-09 19:22                     ` Clément Pit--Claudel
2016-03-09 19:37                     ` Alan Mackenzie
2016-03-09 21:40                       ` Stefan Monnier
2016-03-10 13:01                         ` Alan Mackenzie
2016-03-10 14:52                           ` Stefan Monnier
2016-03-10 15:29                             ` Alan Mackenzie
2016-03-10 16:45                               ` Stefan Monnier
2016-03-10 17:25                                 ` Alan Mackenzie
2016-03-10 17:34                                   ` Stefan Monnier
2016-03-10 19:08                                     ` Alan Mackenzie
2016-03-10 23:10                                       ` Stefan Monnier
2016-03-11 12:50                                         ` Stefan Monnier
2016-03-11 20:48                                         ` Alan Mackenzie
2016-03-11 22:35                                           ` Stefan Monnier
2016-03-11 23:08                                             ` Alan Mackenzie
2016-03-11 23:09                                               ` Clément Pit--Claudel
2016-03-11 23:31                                               ` Stefan Monnier
2016-03-10 23:31                                     ` John Wiegley
2016-03-11  2:08                                       ` Clément Pit--Claudel
2016-03-11  3:08                                       ` Stefan Monnier
2016-03-11  7:27                           ` Andreas Röhler
2016-03-11 12:08                             ` Alan Mackenzie
2016-03-11 12:30                               ` Dmitry Gutov
2016-03-11 13:04                                 ` Alan Mackenzie
2016-03-11 20:21                                   ` Dmitry Gutov
2016-03-12 20:19                               ` Andreas Röhler
2016-03-12 20:38                                 ` Dmitry Gutov
2016-03-12 20:45                                 ` Alan Mackenzie
2016-03-13 14:56                                   ` Andreas Röhler
2016-03-10 13:41                   ` Stefan Monnier
2016-03-09 17:06               ` How do you check if the current point is in a comment or a string? (Was Re: Problems with syntax-ppss: Was [... Apply `comment-depth' text properties when calling `back_comment'.]) Clément Pit--Claudel
2016-03-09 17:24                 ` Kaushal Modi
2016-03-09 17:56                   ` Clément Pit--Claudel
2016-03-09 19:19                     ` Kaushal Modi
2016-03-09 19:34                       ` Clément Pit--Claudel
2016-03-10 14:28                     ` Stefan Monnier
2016-03-10 15:03                       ` Clément Pit--Claudel
2016-03-10 15:20                         ` Stefan Monnier
2016-03-10 17:21                           ` Clément Pit--Claudel
2016-03-12 20:45                       ` Andreas Röhler
2016-03-12 20:53                         ` Clément Pit--Claudel
2016-03-09 16:37       ` [Emacs-diffs] comment-cache 223d16f 2/3: Apply `comment-depth' text properties when calling `back_comment' Richard Stallman
2016-03-09 17:06         ` Dmitry Gutov
2016-03-10 21:20           ` Richard Stallman
2016-03-11  0:26             ` Dmitry Gutov
2016-03-11 12:22               ` Alan Mackenzie
2016-03-11 12:52                 ` Stefan Monnier
2016-03-11 16:20                   ` Drew Adams
2016-03-09 17:48         ` Alan Mackenzie
2016-03-09 19:58           ` martin rudalics
2016-03-09 20:36             ` Eli Zaretskii
2016-03-09 20:53               ` John Wiegley
2016-03-13  9:30                 ` Daniel Colascione
2016-03-13 15:28                   ` Stefan Monnier
2016-03-13 16:24                   ` Eli Zaretskii
2016-03-13 16:27                     ` Daniel Colascione
2016-03-13 17:19                       ` Eli Zaretskii
2016-03-14  1:13                         ` Stefan Monnier
2016-03-14 16:10                           ` Eli Zaretskii
2016-03-11 18:27             ` Alan Mackenzie
2016-03-12 17:08             ` Alan Mackenzie
2016-03-12 18:10               ` martin rudalics
2016-03-12 18:22                 ` Paul Eggert
2016-03-12 18:46                   ` martin rudalics
2016-03-12 19:36                     ` Alan Mackenzie
2016-03-13  9:26                       ` martin rudalics
2016-03-13 11:52                         ` Alan Mackenzie
2016-03-13 12:08                           ` martin rudalics
2016-03-13 12:49                             ` Alan Mackenzie
2016-03-13 13:32                               ` martin rudalics
2016-03-13 17:59                                 ` Eli Zaretskii
2016-03-13 20:09                                   ` martin rudalics
2016-03-14  1:15                                   ` Paul Eggert
2016-03-14  7:42                                     ` martin rudalics
2016-03-14 11:22                                       ` Alan Mackenzie
2016-03-14 19:41                                         ` martin rudalics
2016-03-14 20:58                                           ` Alan Mackenzie
2016-03-14 16:15                                       ` Eli Zaretskii
2016-03-14 19:41                                         ` martin rudalics
2016-03-14 17:00                                       ` Paul Eggert
2016-03-14 19:41                                         ` martin rudalics
2016-03-14 16:09                                     ` Eli Zaretskii
2016-03-13 18:00                               ` Eli Zaretskii
2016-03-13 18:41                                 ` Alan Mackenzie
2016-03-12 20:56               ` Dmitry Gutov
2016-03-12 21:29                 ` Clément Pit--Claudel
2016-03-12 21:59                   ` Dmitry Gutov
2016-03-12 21:58                 ` Alan Mackenzie
2016-03-12 22:16                   ` Dmitry Gutov
2016-03-13 17:59                     ` Alan Mackenzie
2016-03-13 22:49                       ` Stefan Monnier
2016-03-14 12:51                         ` Alan Mackenzie [this message]
2016-03-15  3:14                           ` Stefan Monnier
2016-03-14  1:13                       ` Dmitry Gutov
2016-03-14  1:30                         ` Stefan Monnier
2016-03-14  1:45                           ` Dmitry Gutov
2016-03-14  2:18                             ` Stefan Monnier
2016-03-14 12:23                         ` Alan Mackenzie
2016-03-14 16:15                           ` Dmitry Gutov
2016-03-14 17:29                             ` Alan Mackenzie
2016-03-14 17:52                               ` Dmitry Gutov
2016-03-14 18:46                                 ` Alan Mackenzie
2016-03-14 19:33                                   ` Dmitry Gutov
2016-03-14 21:20                                     ` Alan Mackenzie
2016-03-15  3:10                                       ` Stefan Monnier
2016-03-17  0:47                                       ` Dmitry Gutov
2016-03-17 18:47                                         ` Alan Mackenzie
2016-03-18  1:24                                           ` Dmitry Gutov
2016-03-10 21:20           ` Richard Stallman
2016-03-10 22:24             ` Alan Mackenzie
2016-03-12  1:53               ` Richard Stallman
2016-03-12  3:28                 ` Stefan Monnier
2016-03-12 19:28                   ` Richard Stallman
2016-03-09 17:51         ` Clément Pit--Claudel
2016-03-10 21:20           ` Richard Stallman
2016-03-10 21:38             ` Clément Pit--Claudel
2016-03-12  1:53               ` Richard Stallman
2016-03-10  7:14       ` Andreas Röhler

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160314125137.GD1894@acm.fritz.box \
    --to=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.