This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libfortran/37754] [4.4 Regression] READ I/O Performance regression from 4.3 to 4.4



------- Comment #4 from jvdelisle at gcc dot gnu dot org  2008-10-25 23:56 -------
Created an attachment (id=16547)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16547&action=view)
Experimental patch

With this patch, I see some improvement with a more realistic test case.  Here
are test results using gprof.  I am not sure I can completely trust what I am
seeing, especially when gprof is reporting data on read_logical and that is not
being used.

Flat profile: trunk 4.4, no patch

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 36.57      1.32     1.32                             next_char
 23.82      2.18     0.86                             fd_read
  9.14      2.51     0.33                             push_char
  8.03      2.80     0.29                             memcpy
  7.48      3.07     0.27                             read_character
  2.22      3.15     0.08                             eat_spaces
  1.94      3.22     0.07                             formatted_transfer_scalar
  1.94      3.29     0.07                             read_logical
  0.83      3.32     0.03                             __read_nocancel
  0.83      3.35     0.03                             _int_free
  0.83      3.38     0.03                             eat_separator
  0.83      3.41     0.03                            list_formatted_read_scalar
  0.83      3.44     0.03                             malloc
  0.55      3.46     0.02        1    20.00    20.00  MAIN__
  0.55      3.48     0.02                           _gfortrani_free_format_data
  0.55      3.50     0.02                             _int_malloc
  0.55      3.52     0.02                             pre_position

1.29  1.25  1.20  1.20  1.21  1.34  1.28 ----> 1.25 average for next_char

3.978  4.005  3.989  3.997  3.986  3.981  4.005 ---> 3.992 for test program.

Flat profile: perf1

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
 26.57      0.89     0.89                             next_char
 22.69      1.65     0.76                             fd_read
 15.52      2.17     0.52                             push_char
 14.93      2.67     0.50                             memcpy
  5.97      2.87     0.20                             read_character
  4.18      3.01     0.14                             read_logical
  2.39      3.09     0.08                             eat_separator
  1.19      3.13     0.04                             __read_nocancel
  1.19      3.17     0.04                             _int_free
  1.19      3.21     0.04                             malloc
  0.90      3.24     0.03                             formatted_transfer_scalar
  0.60      3.26     0.02                       _gfortrani_list_formatted_read
  0.60      3.28     0.02                             _int_malloc
  0.60      3.30     0.02                             unformatted_write
  0.30      3.31     0.01                             _gfortrani_free_ionml
  0.30      3.32     0.01                             fd_sfree
  0.30      3.33     0.01                             get_external_unit

.96  .96  1.04  1.0  1.32  .86  1.05 ----> 1.03 average for next_char

3.732  3.710  3.713  3.717  3.737  3.735  3.704 ---> 3.721 for test program.


Flat profile: gfortran 4.3

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 27.57      0.75     0.75                             format_lex
 27.57      1.50     0.75                             parse_format_list
 12.50      1.84     0.34                             push_char
 10.29      2.12     0.28                             do_read
  8.46      2.35     0.23                             mem_read
  2.21      2.41     0.06                            list_formatted_read_scalar
  1.47      2.45     0.04                             __cache_sysconf
  1.47      2.49     0.04                             fd_alloc
  1.10      2.52     0.03                             malloc_consolidate
  0.74      2.54     0.02                             arena_get2
  0.74      2.56     0.02                             formatted_transfer_scalar
  0.37      2.57     0.01        1    10.00    10.00  MAIN__
  0.37      2.58     0.01                             _gfortran_st_write_done
  0.37      2.59     0.01                             _gfortran_store_exe_path
  0.37      2.60     0.01                         _gfortrani_get_internal_unit
  0.37      2.61     0.01                       _gfortrani_list_formatted_read


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]