From: "Gerd Möllmann" <gerd.moellmann@gmail.com>
To: Pip Cet <pipcet@protonmail.com>
Cc: Sean Devlin <spd@toadstyle.org>, emacs-devel@gnu.org
Subject: Re: igc, macOS avoiding signals
Date: Mon, 30 Dec 2024 13:51:04 +0100 [thread overview]
Message-ID: <m2msgduyfb.fsf@gmail.com> (raw)
In-Reply-To: <m2ikr1g0g8.fsf@gmail.com> ("Gerd Möllmann"'s message of "Mon, 30 Dec 2024 07:16:23 +0100")
[-- Attachment #1: Type: text/plain, Size: 2406 bytes --]
Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> Pip Cet <pipcet@protonmail.com> writes:
>
>> Speaking of running with a "normal" config: something about my
>> configuration makes buffer_step (the balance_intervals call, in
>> particular) take forever, to the point the mps build becomes unusable.
>> The buffer in question, when I caught it, is an M-x shell buffer of size
>> 8 MB, so I don't understand why it's taking so long.
>>
>> Still investigating, but skipping the buffer_step seems to help.
>
> balance_intervals means text properties. The only candidate I see in
> comint/shell is ANSI escapes. That could be turned on/off with M-x
> ansi-color-for-comint-mode-xy. Only as a workaround, and maybe to check
> if it's that.
>
> What I do in buffer_step in idle time is basically one step of what the
> old GC does in sweep_buffers.
>
> My expectation was that balancing a tree couldn't take long, and that
> this is not called often enough to be a problem if were expensive. Both
> wrong, as usual.
>
> Not calling balance_intervals is, BTW, not a catastrophic problem. if
> one does anything leading to a graft_intervals_into_buffer, w</r hich is
> called in a lot of places in editfns.c and insdel.c, that balances the
> tree. And if not, the tree might become slower for lookup (redisplay),
> but it still works.
>
> <rant> It's BTW well possible that I myself put that balancing into
> sweep_buffers because of redisplay, I seem to remember that. The
> interval tree has always been a source of fun. I hope, some day, some
> kind soul will eradicate it like the GCPROs. </rant>
>
> In any case, what's a solution?
>
> Right now I'm tending to put the balance_intervals in an if so that one
> can turn it on/off with a Lisp variable. Default would be to not to balance,
> because I think the problems with degenerated interval trees in
> redisplay where rare, and I don't remember problems outside of
> redisplay. But that was an awful long time ago, OTOH.
>
> That would give us more time to think about a possible strategy to solve
> this.
>
> WDYT?
Patch for that attached. I'm now running with that.
I tried to look at the history of intervals.c to see too which degree
the intervals tree is behaving better than decades ago (I think Stefan
Monnier said it's better), but I couldn't really determine that. Too
much has changed.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Make-balancing-buffer-intervals-optional.patch --]
[-- Type: text/x-patch, Size: 1315 bytes --]
From 0aa8b2f483da11bfd6a6397c56182b5877cb779e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@gnu.org>
Date: Mon, 30 Dec 2024 13:41:40 +0100
Subject: [PATCH] Make balancing buffer intervals optional
* src/igc.c (buffer_step): Balance intervals only if
igc__balance_intervals is true.
(syms_of_igc): New DEFVAR_BOOL for igc__balance_intervals.
---
src/igc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/igc.c b/src/igc.c
index 39158b38f05..964723ce315 100644
--- a/src/igc.c
+++ b/src/igc.c
@@ -3697,7 +3697,8 @@ buffer_step (struct igc_buffer_it *it)
buffer_it_next (it);
struct buffer *b = XBUFFER (buf);
compact_buffer (b);
- b->text->intervals = balance_intervals (b->text->intervals);
+ if (igc__balance_intervals)
+ b->text->intervals = balance_intervals (b->text->intervals);
return true;
}
return false;
@@ -5100,4 +5101,8 @@ syms_of_igc (void)
don't do something when idle. Negative values and values that are not numbers
are handled as if they were the default value. */);
Vigc_step_interval = make_fixnum (0);
+
+ DEFVAR_BOOL ("igc--balance-intervals", igc__balance_intervals,
+ doc: /* Whether to balance buffer intervals when idle. */);
+ igc__balance_intervals = false;
}
--
2.47.1
next prev parent reply other threads:[~2024-12-30 12:51 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-28 13:24 igc, macOS avoiding signals Sean Devlin
2024-12-28 13:28 ` Gerd Möllmann
2024-12-28 14:31 ` Eli Zaretskii
2024-12-28 14:45 ` Gerd Möllmann
2024-12-30 7:13 ` Gerd Möllmann
2024-12-30 7:23 ` Gerd Möllmann
2024-12-30 7:39 ` Helmut Eller
2024-12-30 7:51 ` Gerd Möllmann
2024-12-30 8:02 ` Helmut Eller
2024-12-30 8:47 ` Gerd Möllmann
2024-12-30 9:29 ` Helmut Eller
2024-12-30 9:47 ` Helmut Eller
2024-12-30 11:54 ` Gerd Möllmann
2024-12-30 10:05 ` Gerd Möllmann
2024-12-30 10:27 ` Helmut Eller
2024-12-30 11:53 ` Gerd Möllmann
2024-12-30 14:54 ` Eli Zaretskii
2024-12-30 15:05 ` Gerd Möllmann
2024-12-30 15:05 ` Pip Cet via Emacs development discussions.
2024-12-30 12:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:24 ` Eli Zaretskii
2024-12-30 14:59 ` Helmut Eller
2024-12-30 15:15 ` Eli Zaretskii
2024-12-30 15:24 ` Helmut Eller
2024-12-30 15:25 ` Pip Cet via Emacs development discussions.
2024-12-30 15:34 ` Gerd Möllmann
2024-12-30 19:02 ` Helmut Eller
2024-12-30 20:03 ` Pip Cet via Emacs development discussions.
2024-12-30 15:30 ` Gerd Möllmann
2024-12-30 16:57 ` Helmut Eller
2024-12-30 17:41 ` Gerd Möllmann
2024-12-30 17:49 ` Pip Cet via Emacs development discussions.
2024-12-30 18:33 ` Helmut Eller
2024-12-30 17:49 ` Eli Zaretskii
2024-12-30 18:37 ` Gerd Möllmann
2024-12-30 19:15 ` Eli Zaretskii
2024-12-30 19:55 ` Gerd Möllmann
2024-12-31 7:34 ` Helmut Eller
2024-12-31 9:19 ` Gerd Möllmann
2024-12-31 9:51 ` Helmut Eller
2024-12-31 10:00 ` Gerd Möllmann
2024-12-31 13:49 ` Pip Cet via Emacs development discussions.
2024-12-31 14:13 ` Eli Zaretskii
2024-12-31 9:51 ` Gerd Möllmann
2024-12-31 13:18 ` Eli Zaretskii
2024-12-31 14:15 ` Gerd Möllmann
2024-12-31 14:27 ` Eli Zaretskii
2024-12-31 15:05 ` Gerd Möllmann
2024-12-31 15:14 ` Eli Zaretskii
2024-12-31 15:20 ` Gerd Möllmann
2024-12-31 15:12 ` Helmut Eller
2024-12-31 15:31 ` Gerd Möllmann
2024-12-31 15:37 ` Helmut Eller
2024-12-31 15:39 ` Gerd Möllmann
2024-12-31 10:09 ` Pip Cet via Emacs development discussions.
2024-12-31 13:27 ` Eli Zaretskii
2024-12-31 14:29 ` Pip Cet via Emacs development discussions.
2024-12-31 14:34 ` Eli Zaretskii
2024-12-31 15:08 ` Gerd Möllmann
2024-12-31 15:07 ` Gerd Möllmann
2024-12-31 13:14 ` Eli Zaretskii
2024-12-31 14:19 ` Pip Cet via Emacs development discussions.
2024-12-31 14:31 ` Eli Zaretskii
2024-12-31 14:40 ` Helmut Eller
2024-12-31 14:55 ` Gerd Möllmann
2024-12-31 15:07 ` Eli Zaretskii
2024-12-31 15:13 ` Gerd Möllmann
2024-12-31 15:16 ` Helmut Eller
2025-01-02 8:37 ` Stefan Kangas
2025-01-02 9:05 ` Eli Zaretskii
2025-01-02 10:00 ` Helmut Eller
2025-01-02 12:34 ` Pip Cet via Emacs development discussions.
2025-01-02 13:08 ` Gerd Möllmann
2025-01-02 15:42 ` Eli Zaretskii
2025-01-02 17:56 ` Pip Cet via Emacs development discussions.
2024-12-30 12:42 ` Pip Cet via Emacs development discussions.
2024-12-30 13:40 ` Gerd Möllmann
2024-12-30 13:53 ` Pip Cet via Emacs development discussions.
2024-12-30 14:02 ` Gerd Möllmann
2024-12-30 14:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:52 ` Gerd Möllmann
2024-12-30 11:18 ` Pip Cet via Emacs development discussions.
2024-12-30 12:23 ` Gerd Möllmann
2024-12-30 11:11 ` Pip Cet via Emacs development discussions.
2024-12-30 12:13 ` Gerd Möllmann
2024-12-30 10:53 ` Pip Cet via Emacs development discussions.
2024-12-30 10:46 ` Pip Cet via Emacs development discussions.
2024-12-30 12:00 ` Gerd Möllmann
2024-12-30 12:07 ` Gerd Möllmann
2024-12-28 15:12 ` Pip Cet via Emacs development discussions.
2024-12-28 17:30 ` Eli Zaretskii
2024-12-28 18:40 ` Pip Cet via Emacs development discussions.
2024-12-28 18:50 ` Eli Zaretskii
2024-12-28 19:07 ` Eli Zaretskii
2024-12-28 19:20 ` Pip Cet via Emacs development discussions.
2024-12-28 19:36 ` Eli Zaretskii
2024-12-28 20:54 ` Pip Cet via Emacs development discussions.
2024-12-29 5:51 ` Eli Zaretskii
2024-12-28 19:15 ` Pip Cet via Emacs development discussions.
2024-12-28 19:30 ` Eli Zaretskii
2024-12-28 16:29 ` Pip Cet via Emacs development discussions.
2024-12-29 2:21 ` Sean Devlin
2024-12-29 12:22 ` Pip Cet via Emacs development discussions.
2024-12-29 15:01 ` Gerd Möllmann
2024-12-29 19:44 ` Pip Cet via Emacs development discussions.
2024-12-30 6:16 ` Gerd Möllmann
2024-12-30 12:51 ` Gerd Möllmann [this message]
2024-12-30 13:09 ` Pip Cet via Emacs development discussions.
2024-12-30 13:28 ` Gerd Möllmann
2024-12-30 5:24 ` Sean Devlin
2024-12-30 6:17 ` Gerd Möllmann
2024-12-30 5:23 ` Sean Devlin
-- strict thread matches above, loose matches on Subject: below --
2024-12-28 6:40 Gerd Möllmann
2024-12-28 12:49 ` Pip Cet via Emacs development discussions.
2024-12-28 12:55 ` Gerd Möllmann
2024-12-28 13:50 ` Óscar Fuentes
2024-12-29 8:02 ` Helmut Eller
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=m2msgduyfb.fsf@gmail.com \
--to=gerd.moellmann@gmail.com \
--cc=emacs-devel@gnu.org \
--cc=pipcet@protonmail.com \
--cc=spd@toadstyle.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).