Bash makes many calls to stdio functions that may have unlocked_stdio(3) equivalents. Since the locking functionality provided by the regular versions is only useful in multi-threaded applications, it probably makes sense for Bash to use the *_unlocked versions where available.
E.g. in situations where execution time is dominated by putchar(3) calls,
using putchar_unlocked(3) can offer an ~2X speedup:
$ fun() { printf -v X "%$((1<<24))s" && time printf "$X"; }
$ export -f fun
$ bash.old -c fun >/dev/null
real 0m0.720s
user 0m0.669s
sys 0m0.048s
$ bash.new -c fun >/dev/null
real 0m0.370s
user 0m0.301s
sys 0m0.067s
This patch is basically an adoption of the unlocked-io module from Gnulib.
0001-use-unlocked-stdio-functions.patch
Description: Binary data
