https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91030
--- Comment #23 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Some numbers for the provisionary patch, varying the size for the buffers. With the patch, the original benchmark (minus some output, only the elapsed time is shown) and the script for a in 1024 2048 4096 8192 16384 32768 65536 131072 do rm -f out.dat sync ; sync; sync sleep 1 echo -n $a GFORTRAN_BUFFER_SIZE_UNFORMATTED=$a ./a.out done rm -f out.dat sync I get on my home Ryzen box with ext4 1024 2.8888959884643555 2048 2.4514980316162109 4096 2.2090110778808594 8192 1.9955158233642578 16384 2.0065548419952393 32768 1.9320869445800781 65536 1.9494299888610840 131072 1.8885779380798340 On gcc135 (POWER9) I get 1024 6.2069039344787598 2048 3.5782949924468994 4096 2.2184860706329346 8192 1.4914679527282715 16384 1.1247980594635010 32768 0.95092821121215820 65536 0.85877490043640137 131072 0.82407808303833008 and on gcc115 (aarch64): 1024 10.543070077896118 2048 7.3426060676574707 4096 5.7169480323791504 8192 4.7394258975982666 16384 4.2912349700927734 32768 4.0224111080169678 65536 3.8719530105590820 131072 3.8628818988800049 so 64 k looks like a good choice, except for the Ryzen machine, where 8k would be sufficient.