Print

Print


Hello,

In my view these are both the same.  Any optimizer you paid money for
will recognize the variables to be unused outisde the subroutine and
will recignize references to ubound() to be a constant which may be
hoisted out of the inner loop.

If you've detected a speed difference, you may have uncovered
a compiler bug of some sort or other.

IMHO, of course.

"Nofal, Mostafa" wrote:
> 
> Dear Colleagues
> 
> I would like to get your opinion about the difference in speed between the
> following two options and why do you prefer one over the other.
> 
> Option 1
> --------
> Subroutine dosomething( a, b, c )
> IMPLICIT NONE
> REAL, INTENT(in) :: a(:,:)
> REAL, INTENT(in out) :: b(:,:), c(:)
> INTEGER :: i, j
>   DO i = 1, UBOUND(a,1)
>     DO j = 1,UBOUND(a,2)
>       ....
>     END DO
>   END DO
> RETURN
> END SUBROUTINE
> 
> Option 2
> --------
> Subroutine dosomething( a, b, c )
> IMPLICIT NONE
> REAL, INTENT(in) :: a(:,:)
> REAL, INTENT(in out) :: b(:,:), c(:)
> INTEGER :: i, j, length, width
>   length = UBOUND(a,1)
>   width = UBOUND(a,2)
>   DO i = 1, length
>     DO j = 1, width
>       ....
>     END DO
>   END DO
> RETURN
> END SUBROUTINE
> 
> Regards
> 
> 
> Mostafa Nofal, Ph.D.                    E-mail: [log in to unmask]
> Associate Research Officer              URL: http://www.nrc.ca/irc/bes/
> Building Envelope & Structure           tel. (613) 993-9672
> Institute for Research in Construction  fax (613) 954-3733
> National Research Council of Canada
> Bldg. M-24, Rm. 322A,
> 1500 Montreal Road, Ottawa, Ontario,
> Canada,         K1A 0R6
> 
>   ------------------------------------------------------------------------
> 
>    Part 1.2    Type: application/ms-tnef
>            Encoding: base64

-- 

Cheers!
Dan Nagle		[log in to unmask]
Purple Sage Computing Solutions, Inc.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%