GNU bug report logs -
#66020
[PATCH] Reduce GC churn in read_process_output
Previous Next
Reported by: Dmitry Gutov <dmitry <at> gutov.dev>
Date: Sat, 16 Sep 2023 01:27:02 UTC
Severity: wishlist
Tags: patch
Done: Dmitry Gutov <dmitry <at> gutov.dev>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> Date: Thu, 21 Sep 2023 15:20:57 +0300
> Cc: Eli Zaretskii <eliz <at> gnu.org>, Stefan Kangas <stefankangas <at> gmail.com>,
> 66020 <at> debbugs.gnu.org
> From: Dmitry Gutov <dmitry <at> gutov.dev>
>
> On 21/09/2023 05:36, Stefan Monnier wrote:
> >> make_process), although I had to use a value produced by make_uninit_string:
> >> apparently simply storing a char* field inside a managed structure creates
> >> problems for the GC and early segfaults. Anyway, the result was slightly
> > That should depend on*where* you put that field. Basically, it has to
> > come after:
> >
> > /* The thread a process is linked to, or nil for any thread. */
> > Lisp_Object thread;
> > /* After this point, there are no Lisp_Objects. */
> >
> > since all the words up to that point will be traced by the GC (and
> > assumed to be Lisp_Object fields).
>
> Ah, thanks. That calls for another try.
>
> ...still no improvement, though no statistically significant slowdown
> either this time.
Why did you expect a significant improvement? Allocating and freeing
the same-size buffer in quick succession has got to be optimally
handled by modern malloc implementations, so I wouldn't be surprised
by what you discover. There should be no OS calls, just reuse of a
buffer that was just recently free'd. The overhead exists, but is
probably very small, so it is lost in the noise.
This bug report was last modified 1 year and 30 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.