我要做的是使用未知变量填充特定矩阵的值。
这是第一个实现:
#define PHI(I,J,K) phi[xlength*ylength*(I)+xlength*(J)+(K)] //Macro that calls function
其中phi是尺寸xlength * ylength * tlength
的1D矩阵或
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 []的特定值。
哪个更快?
答案 0 :(得分:1)
最有可能没有任何区别。编译器将内联函数,就像内联宏一样。由于宏在调试器中使用起来比较困难,因此请使用函数。
正如我总是说“哪个表现更好”,你应该总是对不同的选项进行基准测试,因为编译器的差异在某些情况下会产生一些小的差异(在其他情况下会有很大的不同)。在SO或其他一些网站上询问只会告诉你其他人的想法,而不是真实案例中的实际情况。