Bug 10905 - 'IMPLICIT' rule may slow down program up to 100 times
Summary: 'IMPLICIT' rule may slow down program up to 100 times
Status: CLOSED WONTFIX
Alias: None
Product: Sisyphus
Classification: Development
Component: gcc4.1-fortran (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-02-22 12:25 MSK by serpiph
Modified: 2018-07-13 04:30 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description serpiph 2007-02-22 12:25:27 MSK
Имеется набор программ, которые изначально были написаны с использованием
умолчаний при использовании переменных (т.е. если имя переменной начинается на
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 Michael Shigorin 2010-10-30 22:48:51 MSD
Предлагаю тоже в http://gcc.gnu.org/bugzilla/
Comment 2 Dmitry V. Levin 2018-07-13 04:30:58 MSK
Очевидно, неактуально.