------- Comment #1 from ubizjak at gmail dot com 2007-05-30 15:08 ------- gfortran -ffast-math -funroll-loops -O3 -msse3 -mfpmath=387 rnflow.f90
time ./a.out user 0m37.982s profiled run: user 0m43.147s each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 59.76 17.73 17.73 64527290 0.00 0.00 idamax_ 11.80 21.23 3.50 64 0.05 0.06 gentrs_ 9.47 24.04 2.81 64 0.04 0.32 cptrf2_ 6.94 26.10 2.06 6749 0.00 0.00 cmpcpt_ 4.01 27.29 1.19 64 0.02 0.02 cptrf1_ 3.98 28.47 1.18 1 1.18 26.48 matsim_ 0.78 28.70 0.23 1 0.23 3.17 evlrnf_ gfortran -ffast-math -funroll-loops -O3 -msse3 -mfpmath=387 -ftree-vectorize rnflow.f90 time ./a.out user 0m55.031s profiled run: user 1m0.124s Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 71.55 31.43 31.43 64527290 0.00 0.00 idamax_ 8.17 35.02 3.59 64 0.06 0.06 gentrs_ 6.65 37.94 2.92 64 0.05 0.53 cptrf2_ 4.89 40.09 2.15 6749 0.00 0.00 cmpcpt_ 2.66 41.26 1.17 1 1.17 40.19 matsim_ 2.53 42.37 1.11 64 0.02 0.02 cptrf1_ 0.80 42.72 0.35 1 0.35 3.70 evlrnf_ However, idamax_ routine is identical in both cases. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31897