rjtg0209@uxa.cso.uiuc.edu (12/04/90)
My programs do a lot of unformatted I/O. I hoped that such an I/O in
FORTRAN is done close to the disk speed but this is not necessarily
true. On some workstations, the I/O speeds have been a magnitude
slower. I wrote the following program to benchmark the unformatted
I/O:
integer x(1000)
open(1,file='scr',form='unformatted')
do i=1,400
write(1)x
enddo
rewind 1
do i=1,400
read(1)x
enddo
end
The problem is that the wall clock time for this program is much longer
than the CPU time on several computers that I tested. Foe example, the
CPU on SPARSTATION 1 shows the transfer rate of 2.5 Mbytes/s, while the
wall clock time on the unloaded machine shows only 300 kbytes/s.
Perhaps this is associated with the buffer size allocated for each open
file. The real speed of loaded Cray-2 which has a 256 kbyte buffer is
close to 15 Mbytes/s. The speed of my PC 386/33MhHZ with 640 Mbytes
ESDI disk, using the program above and the Microsoft 5.0 compiler is
200 kbytes/s. However, if one reserves a 32k buffer by the blocksize
option in the open statement, the speed increses four-fold, to 800
kbytes/s. Does anybody have any experiences with these kinds of
problems? Which compilers have options to increase the buffer size or
do it automatically?
Please send your response to ignacy@uiucvmd.bitnet
Ignacy Misztal
University of Illinois