找回密码
 注册
Simdroid-非首页
查看: 217|回复: 7

[3. Fortran] 关于fortran中的数组

[复制链接]
发表于 2007-3-11 08:51:27 | 显示全部楼层 |阅读模式 来自 天津和平区
比如定义三个数组
real :: A(5)
real :: B(1,5)
real :: C(5,1)
三者有区别吗?有何区别?
发表于 2007-3-16 05:08:35 | 显示全部楼层 来自 美国
Simdroid开发平台
有区别,存储时寻址不一样
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)
三者有区别吗?有何区别?

评分

2

查看全部评分

 楼主| 发表于 2007-3-17 18:07:17 | 显示全部楼层 来自 天津
原帖由 samacross 于 2007-3-16 05:08 发表
有区别,存储时寻址不一样
FORTRAN语言中,数组按列优先顺序存储
【例】二维数组Amn的按列优先存储的线性序列为:
    a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn

所以C会比B高效,但是至于A,我 ...


估计是笔误。非常感谢!
发表于 2007-4-27 18:15:24 | 显示全部楼层 来自 广东汕头
比如定义三个数组
real :: A(5)
real :: B(1,5)
real :: C(5,1)
三者有区别吗?有何区别?
当然有区别,维数、行列不一样
 楼主| 发表于 2007-4-28 14:41:31 | 显示全部楼层 来自 天津
原帖由 billstf 于 2007-4-27 18:15 发表
比如定义三个数组
real :: A(5)
real :: B(1,5)
real :: C(5,1)
三者有区别吗?有何区别?
当然有区别,维数、行列不一样


嗯!真聪明,我咋就没看出来呢!谢谢了!
发表于 2007-5-9 12:23:59 | 显示全部楼层 来自 湖南长沙
原帖由 samacross 于 2007-3-16 05:08 发表
有区别,存储时寻址不一样
FORTRAN语言中,数组按列优先顺序存储
【例】二维数组Amn的按列优先存储的线性序列为:
    a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn

所以C会比B高效,但是至于A,我 ...
估计是笔误。非常感谢!

是B高效
回复 不支持

使用道具 举报

发表于 2007-5-16 10:53:34 | 显示全部楼层 来自 陕西西安
我认为A和c等效。
回复 不支持

使用道具 举报

发表于 2009-4-7 13:13:32 | 显示全部楼层 来自 湖南长沙
谢谢,
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 11:28 , Processed in 0.048177 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表