Bug 10905 - 'IMPLICIT' rule may slow down program up to 100 times
: 'IMPLICIT' rule may slow down program up to 100 times
Status: NEW
: Sisyphus
(All bugs in Sisyphus/gcc4.1-fortran)
: unstable
: all Linux
: P3 major
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2007-02-22 12:25 by
Modified: 2010-10-30 22:48 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-02-22 12:25:27
Имеется набор программ, которые изначально были написаны с использованием
умолчаний при использовании переменных (т.е. если имя переменной начинается на
I,J,K,L,M,N, то переменная будет типа INTEGER, если на другие буквы, то REAL).
То есть программа:
=============
program test
ii=5
x1=8.1
write(*,*)ii,x1
end
============
выдаст
    5 8.10000
То есть программа быдет эквивалентна такой:
============
program test
integer ii
real x1
ii=5
x1=8.1
write(*,*)ii,x1
end
=============
Так вот при определённых условиях (какие конкретно, не знаю, может набор из
них): использование в COMMON-блоках таких переменных, использование таких
переменных в функциях и процедурах программа может начать тормозиться до 100
раз
даже на строках вида
A=B
В моей программе цикл вида (X - необъявленная переменная)
============
do l=1,50
do k=1,50
do j=1,50
do i=1,50
if(условие)then
x(i,j,k)=выражение, состоящее тольлко из сложения и перемножения элементов
массива x
end if
end do
end do
end do
end do
=========
поначалу исполнялся 50мс, а через некоторое время - 5с, причём в дальнейшем
время выполнения цикла всё увеличивалось.

Всю программу предоставить не могу.

После выставления
IMPLICIT NONE
и принудительного объявления
REAL X(50,50,50)
замедление цикла прекратилось.
------- Comment #1 From 2010-10-30 22:48:51 -------
Предлагаю тоже в http://gcc.gnu.org/bugzilla/