GNU bug report logs -
#64735
29.0.92; find invocations are ~15x slower because of ignores
Previous Next
Full log
View this message in rfc822 format
On 25/07/2023 22:16, sbaugh <at> catern.com wrote:
> Dmitry Gutov <dmitry <at> gutov.dev> writes:
>>> (my-bench 1 default-directory "")
>>
>> (("built-in" . "Elapsed time: 1.601649s (0.709108s in 22 GCs)")
>> ("with-find" . "Elapsed time: 1.792383s (1.135869s in 38 GCs)")
>> ("with-find-p" . "Elapsed time: 1.248543s (0.682827s in 20 GCs)")
>> ("with-find-sync" . "Elapsed time: 0.922291s (0.343497s in 10 GCs)"))
>
> Tangent, but:
>
> Ugh, wow, call-process really is a lot faster than make-process. I see
> now why people disliked my idea of replacing call-process with something
> based on make-process, this is a big difference...
More like forewarned. Do we want to exchange 25% of performance for
extra reactivity? We might. But we'd probably put that behind a pref and
have to maintain two implementations.
> There's zero reason it has to be so slow... maybe I should try to make a
> better make-process API and implementation which is actually fast.
> (without worrying about being constrained by compatibility with
> something that's already dog-slow)
I don't know if the API itself is at fault. The first step should be to
investigate which part of the current one is actually slow, I think.
But then, of course, if improved performance really requires a change in
the API, we can switch to some new one too (which having to maintain at
least two implementations for a number of years).
BTW, looking at the difference between the with-find-* approaches'
performance, it seems like most of it comes down to GC.
Any chance we're doing extra copying of strings even when we don't have
to, or some inefficient copying -- compared to the sync implementation?
E.g. we could use the "fast" approach at least when the :filter is not
specified (which is the case in the first impl, "with-find"). The manual
says this:
The default filter simply outputs directly to the process buffer.
Perhaps it's worth looking at.
This bug report was last modified 1 year and 274 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.