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--