【发布时间】:2010-09-18 15:55:06
【问题描述】:
我有这个“简化”的 fortran 代码
real B(100, 200)
real A(100,200)
... initialize B array code.
do I = 1, 100
do J = 1, 200
A(J,I) = B(J,I)
end do
end do
一位编程大师警告我,fortran 按列顺序高效访问数据,而 c 按行顺序有效访问数据。他建议我仔细看一下代码,并准备好切换循环以保持旧程序的速度。
作为一个懒惰的程序员,我认识到所涉及的时间以及我可能犯的错误,我开始想知道是否有一种#define 技术可以让我安全、轻松地转换此代码。
你有什么建议吗?
【问题讨论】:
-
另一个你可能犯的错误示例:让 J=200(其范围为 1 到 200)和 I=100(范围为 1 到 100),这将是最后一个嵌套循环,它将执行 A(200,100) = B(200,100)--哎呀!您已将两个数组声明为 (100, 200)。你的编译器可能会抱怨......
标签: c arrays c-preprocessor