https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54613

Thomas Koenig <tkoenig at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #28211|0                           |1
        is obsolete|                            |

--- Comment #7 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Created attachment 43200
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43200&action=edit
Draft patch for BACK, slows down some cases

This patch implements the functionality, but there are still
issues with speed. Putting in the condition for back inside
a hot loop slows down things too much..
Here are some numbers:

program main
  real, dimension(1000,1000) :: a
  real, dimension(1000*1000) :: b
  call random_number(a)
  call cpu_time (t1)
  print *,minloc(a)
  call cpu_time (t2)
  print *,t2-t1
  call random_number(b)
  call cpu_time (t1)
  print *,minloc(b,dim=1)
  call cpu_time (t2)
  print *,t2-t1
end program main

"gfortran" is gcc-8 with the patch, "/usr/bin/gfortran" is gcc-7.

$ gfortran -O3 bench.f90 && ./a.out
   4.58569974E-02
   7.76470006E-02
$ gfortran -Ofast bench.f90 && ./a.out
   4.58849967E-02
   4.99750078E-02
$ /usr/bin/gfortran -O3 bench.f90 && ./a.out
   3.56819928E-02
   7.77039826E-02
$ /usr/bin/gfortran -Ofast bench.f90 && ./a.out
   4.05109972E-02
   4.98609543E-02

So, the inline version appears to be OK, the library version is slower.

Reply via email to