> -- Иван Денисов писал(а):
> Вот код для фортрана, который использовался для небольшой рабочей проверки, про которую я говорил....
Как говорится, я не собираюсь критиковать, но я просто не понимаю, как с помощью этого бессмысленного теста можно сделать какие-бы то ни было выводы о работе компиляторов вообще:-(

1) при вычислении m*m очевидно происходит целочисленное переполнение.

2) поскольку суммируемые элементы внутреннего цикла не зависят от k, выносом этого цикла наружу достигается ускорение по сравнению с исходной оптимизированной (-O3) программой еще в 10 раз:
## Код:
```
program bench;
IMPLICIT NONE
DOUBLE PRECISION, DIMENSION (1000,1000) :: x
INTEGER :: i,j,k,n,m
DOUBLE PRECISION, DIMENSION (1000) :: f
DOUBLE PRECISION :: sum
do i=1,1000
   do j=1,1000
      x(i,j) = 0
   end do
end do
n = 1
m = 1
f(1) = 0
do i=1,1000
   do j=1,1000
      x(i,j) = m*m+n*n+1
      f(1)=f(1)+x(i,j)/(x(i,j)+2.0d0/m)
      m = m + 1
   end do
   n = n + 1
end do
do k=2,1000
   f(k) = f(1)
end do
sum = 0
do k=1,1000
   sum = sum + f(k)
end do
write(*,*) sum, x(1000,1000)
end program bench
```

При этом код работает одинаково быстро как при компиляции с оптимизацией (-O3) так и без нее (-O0) - около 0.09 сек.

3) поскольку в фортране массивы хранятся по столбцам изменение очередности i и j циклов должно бы привести к дополнительному ускорению работы программы.

Для теста использовался gfortran.

И векторизация тут похоже не при чем.