有区别,存储时寻址不一样
FORTRAN语言中,数组按列优先顺序存储
【例】二维数组Amn的按列优先存储的线性序列为:
a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn
所以B会比C高效,但是至于A,我就不知道为什么了
看下面的测试结果
implicit none
integer i,j,k,N
parameter(N=150000000)
real A(N)
real B(1,N)
real C(N,1)
real t1,t2
t1=second()
do i=1,N
A(i)=i
enddo
t2=second()
print*,'t= ',t2-t1
t1=second()
do j=1,N
B(1,j)=j
enddo
t2=second()
print*,'t= ',t2-t1
t1=second()
do k=1,N
C(k,1)=k
enddo
t2=second()
print*,'t=',t2-t1
end
结果:
./a.out
t= 4.60216808
t= 4.54662704
t= 5.39830589
原帖由 junziyang 于 2007-3-11 08:51 发表
比如定义三个数组
real :: A(5)
real :: B(1,5)
real :: C(5,1)
三者有区别吗?有何区别? |