Re: FYI, 2.73 slower than 2.72

"Zack Weinberg" <[email protected]> Wed, 18 Mar 2026 12:57:53 -0400
Newsgroups gmane.comp.sysutils.autoconf.general
Message-ID <[email protected]>
--288bfa7c10ab4401b4440f4019637db5
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

On Wed, Mar 18, 2026, at 12:46 PM, Paul Eggert wrote:
> On 2026-03-18 09:22, Zack Weinberg wrote:
>> I don't have a good explanation for this; it seems to me that even
>> for the longest test programs we have, that construct should never
>> take more than a few _micro_seconds.  Maybe bash implements it in an
>> inefficient way?
>
> Perhaps PATH is long and 'cat' is late in the PATH?
>
> If Autoconf 2.73 prepends stuff to PATH that 2.72 didn't, that might
> at least partly explain the small increase that you observe.

My PATH _is_ pretty long and 'cat' _is_ near the end of it, but neither
version of the configure script _modifies_ PATH, and bash's cache of
where programs are found should mean that 'cat's location within PATH
doesn't matter.  I'm currently looking into the possibility that the
'copy_file_range' system call is inefficient for small files: the
attached shell script mimics the `cat confdefs.h - <<heredoc` pattern
and strace tells me it spends 3.61% of its runtime in 'copy_file_range'
vs. only 2.25% in 'read'+'write', despite having to move approximately
12x more data through 'read' and 'write'.

(This test also lets me confirm that current versions of bash and dash
aren't doing anything super inefficient like reading from the script one
character at a time or writing out heredocs one line at a time, both of
which I vaguely recall being a problem a long time ago.)

Do you happen to remember why we concatenate confdefs.h and the test
program, instead of #include-ing confdefs.h from the test program?

zw
--288bfa7c10ab4401b4440f4019637db5
Content-Disposition: attachment; filename="slow-heredocs-maybe.sh"
Content-Type: application/x-shellscript; name="slow-heredocs-maybe.sh"
Content-Transfer-Encoding: base64

IyEgL2Jpbi9zaAoKIyBhIGxpdHRsZSBtb3JlIHRoYW4gMmtCCmxvbmdfdGV4dD0iCkxvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNl
ZCBkbwplaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhLiBVdCBlbmltIGFkCm1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJj
aXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dAphbGlxdWlwIGV4IGVhIGNvbW1vZG8g
Y29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4KcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYQpwYXJp
YXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwg
c3VudCBpbgpjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS4KCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlw
aXNjaW5nIGVsaXQsIHNlZCBkbwplaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkCm1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dAphbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4KcmVw
cmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1
Z2lhdCBudWxsYQpwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0
IG5vbiBwcm9pZGVudCwgc3VudCBpbgpjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xs
aXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj
b25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbwplaXVzbW9kIHRlbXBvciBpbmNp
ZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkCm1p
bmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMg
bmlzaSB1dAphbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4KcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYQpwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2Nj
YWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbgpjdWxwYSBxdWkgb2ZmaWNp
YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KCkxvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbwplaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh
LiBVdCBlbmltIGFkCm1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1
bGxhbWNvIGxhYm9yaXMgbmlzaSB1dAphbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0
LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4KcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg
dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYQpwYXJpYXR1ci4gRXhj
ZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbgpj
dWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4K
CkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVs
aXQsIHNlZCBkbwplaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xv
cmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkCm1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dAphbGlxdWlwIGV4IGVhIGNv
bW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4KcmVwcmVoZW5kZXJp
dCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YQpwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p
ZGVudCwgc3VudCBpbgpjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBp
ZCBlc3QgbGFib3J1bS4KIgoKdG1wMT0kKC91c3IvYmluL21rdGVtcCAtcCAuIHRtcDEuWFhY
WFhYWFhYWFhYKQp0bXAyPSQoL3Vzci9iaW4vbWt0ZW1wIC1wIC4gdG1wMi5YWFhYWFhYWFhY
WFgpCnRyYXAgJy91c3IvYmluL3JtIC1mICR0bXAxICR0bXAyJyAwCgovdXNyL2Jpbi9jYXQg
PiAiJHRtcDEiIDw8X0VPRgoke2xvbmdfdGV4dH0KJHtsb25nX3RleHR9CiR7bG9uZ190ZXh0
fQoke2xvbmdfdGV4dH0KX0VPRgoKL3Vzci9iaW4vY2F0ICIkdG1wMSIgLSA+ICIkdG1wMiIg
PDxfRU9GCiR7bG9uZ190ZXh0fQoke2xvbmdfdGV4dH0KJHtsb25nX3RleHR9CiR7bG9uZ190
ZXh0fQoke2xvbmdfdGV4dH0KJHtsb25nX3RleHR9CiR7bG9uZ190ZXh0fQoke2xvbmdfdGV4
dH0KX0VPRgo=

--288bfa7c10ab4401b4440f4019637db5--