Subject: Re: bug#66288: 29.1; Performance regression using pipe for subprocess

From: Chris Hanson <[email-masked]>
Date: Sun, 1 Oct 2023 14:02:26 -0400

On 10/1/23 04:39, Eli Zaretskii wrote:
>> Date: Sat, 30 Sep 2023 20:57:31 -0400
>> From: Chris Hanson <[email-masked]>
>>
>> When using "xscheme.el" to start and interact with MIT/GNU Scheme in a
>> subprocess, the performance significantly degraded in Emacs 29.1.  It
>> worked well in older releases.
>>
>> Here is a recipe:
>>
>>       emacs -Q
>>       M-x load-library RET xscheme RET
>>       M-x run-scheme RET
>>
>>       and see how slowly the process output is printed as Scheme starts.
>>       Compare this to Emacs 28.2 or earlier.
> 
> Please post the comparison as you see it on your system, preferably in
> quantitative terms (e.g., time it takes to read and process some chunk
> of text in both versions), and using the same version of MIT/GNU
> Scheme.
> 
> FWIW, I see no changes in xscheme.el between v28.1 and v29.1, except
> some minor aesthetic changes and renames of functions.  So I wonder
> how come you see a significant slowdown.

Attached find two screen grabs showing 28.2 and 29.1; you'll see the 
difference is dramatic.  In both cases the same MIT/GNU Scheme version 
was used.  (FYI: I'm the MIT/GNU Scheme maintainer, as well as the 
original author of "xscheme.el".)

I saw that there were no relevant differences in "xscheme.el" but I 
never thought that was relevant.

I believe this has something to do with how piped subprocesses are being 
managed.  I've not looked deeply into the C code for this, but I could 
find no mention of anything to do with pipes in NEWS.

I don't think there's anything funny going on with how MIT/GNU Scheme 
manages stdout but I'll look into it.