From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16364 invoked by alias); 21 Aug 2009 07:02:58 -0000 Received: (qmail 13826 invoked by uid 48); 21 Aug 2009 07:02:40 -0000 Date: Fri, 21 Aug 2009 07:02:00 -0000 Message-ID: <20090821070240.13818.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/41137] inefficient zeroing of an array In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "jv244 at cam dot ac dot uk" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-08/txt/msg01706.txt.bz2 ------- Comment #1 from jv244 at cam dot ac dot uk 2009-08-21 07:02 ------- Just for reference, the difference in time between the two variants is truly impressive. About a factor of 11 with gcc 4.4 and 8 with gcc 4.5. Given that a code like CP2K spents sometimes about 5-10% of its time in zeroing stuff, this would help significantly. trunk: > gfortran -O3 -march=native test.f90 > ./a.out 0.10000600 0.84405303 4.4 branch: > gfortran -O3 -march=native test.f90 > ./a.out 0.10400600 1.1320710 test code: SUBROUTINE S(a,n) INTEGER :: n REAL :: a(n,n,n,n) a(:,:,:,:)=0.0 END SUBROUTINE SUBROUTINE S2(a) REAL :: a(10,10,10,10) a(:,:,:,:)=0.0 END SUBROUTINE REAL :: a(10,10,10,10),t1,t2 INTEGER :: I,N N=100000 CALL CPU_TIME(t1) DO I=1,N CALL S2(a) ENDDO CALL CPU_TIME(t2) write(6,*) t2-t1 CALL CPU_TIME(t1) DO I=1,N CALL S(a,10) ENDDO CALL CPU_TIME(t2) write(6,*) t2-t1 END -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41137