以下哪项实施更快?

时间:2013-05-17 17:46:11

标签: c++ matrix macros functional-programming

我要做的是使用未知变量填充特定矩阵的值。

这是第一个实现:

#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 []的特定值。

哪个更快?

1 个答案:

答案 0 :(得分:1)

最有可能没有任何区别。编译器将内联函数,就像内联宏一样。由于宏在调试器中使用起来比较困难,因此请使用函数。

正如我总是说“哪个表现更好”,你应该总是对不同的选项进行基准测试,因为编译器的差异在某些情况下会产生一些小的差异(在其他情况下会有很大的不同)。在SO或其他一些网站上询问只会告诉你其他人的想法,而不是真实案例中的实际情况。