http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50673
Bug #: 50673
Summary: very slow I/O with trailing spaces
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
AssignedTo: [email protected]
ReportedBy: [email protected]
The following testcase (derived from CP2K, which required 20min to read a 600Mb
file) is about 100x times slower with gfortran than with ifort (12.0.4)
CHARACTER(LEN=40480) :: line="O 0.12456789 0.123456789 0.123456789"
CHARACTER(LEN=2) :: AA
REAL*8 :: vec(3)
DO i=1,10000
read(line,*) AA,vec
ENDDO
END
The issue seems related to how efficient the trailing spaces are handled in
both compilers. 4.7 is a bit (20%) slower than 4.3, but nothing fundamental.
Profiling the code shows that most time is spent in next_char, mem_read,
memcpy, eat_spaces.