【发布时间】:2013-05-17 17:46:11
【问题描述】:
我要做的是使用未知变量填充特定矩阵的值。
这是第一个实现:
#define PHI(I,J,K) phi[xlength*ylength*(I)+xlength*(J)+(K)] //Macro that calls function
其中 phi 是维度为 xlength*ylength*tlength 的一维矩阵
或
phi= new double[xlength*ylength*tlength]; //code for phi
另一种选择是定义一个类似的函数
void PHI(double *&phi, int &I, int &J, int &K, double &value) //declare function
{
phi[xlength*ylength*I+xlength*J+K]=value; //return specific value of phi
}
我会像这样使用宏或函数:
for (int i=0;i<tlength;i++) //just making a loop here
{
for (int j=0;j<ylength;j++)
{
PHI(i,j,1)= stuff here //The macro or the function would go here
}
}
所以我正在做的是使用宏来指向矩阵 phi[] 的特定单元格,或者我正在使用函数来填充矩阵 phi[] 的特定值。
哪个更快?
【问题讨论】:
-
通过对您的程序进行基准测试找出答案。 Stack Overflow 成员可能很聪明,但他们的大脑肯定不具备现代 CPU 的计算能力。
-
哦,好吧。哈哈!我只是在检查是否将所有这些东西传递给函数或仅使用宏会更快。如果未知,我想我可以测试一下。
-
@H2CO3 但我可以那样使用宏,对吧?可以在宏中包含来自 for 循环的变量,对吧?
-
OK 在什么意义上?如果它编译,那么它在语法上是正确的。
标签: c++ matrix macros functional-programming