Keeping in mind that correct is better than fast.  I would like to start
looking at refactoring the I/O library to eliminate some of the overhead. 
Beginning with internal units where there is no need for alloc buffering like
we do now,

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 18.02      1.84     1.84                             next_char
 10.87      2.95     1.11                             _gfortrani_read_sf
  7.84      3.75     0.80                             _gfortrani_is_array_io
  5.83      4.35     0.60                             memcpy
  5.83      4.94     0.60                             push_char
  5.68      5.52     0.58                             read_real
  5.58      6.09     0.57                             ____strtod_l_internal
  5.19      6.62     0.53                             fd_alloc_r_at
  4.60      7.09     0.47                             mem_alloc_r_at
  3.92      7.49     0.40                             eat_spaces
  3.77      7.88     0.39                             _gfortrani_is_stream_io
  2.89      8.17     0.30                            
list_formatted_read_scalar
  2.55      8.43     0.26                            
_gfortrani_is_internal_unit
  2.25      8.66     0.23                             __read_nocancel
  1.13      8.78     0.12                             _gfortran_transfer_array
  1.08      8.89     0.11                             _gfortrani_convert_real
  1.08      9.00     0.11                             nml_bad_return
  0.88      9.09     0.09                             eat_line
  0.88      9.18     0.09                             str_to_mpn
  0.83      9.26     0.09                            
_gfortrani_list_formatted_read
  0.78      9.34     0.08                             __lseek_nocancel


-- 
           Summary: libgfortran I/O performance issues
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jvdelisle at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31501

Reply via email to