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.

Reply via email to