如何减少将矩阵传递给函数的开销?

时间:2015-10-01 14:48:44

标签: c++ function memory

我正在对2个相当大(每个2 GB以上)的3D数组执行统计,并在函数内执行该计算:

double stats(vector< vector< vector< double > > > A, vector< vector< vector< double > > > B);

我相信程序花费的大量时间只是将AB传递给我的函数,而不是实际执行里面的函数

这看起来合情合理吗?将这些vector传递给函数会有很大的开销吗?如果是这样,最好的方法是什么?我知道我可以简单地将所有这些函数放在class中,然后根据类成员引用数组,但我希望尽可能保持这些函数类不可知。

1 个答案:

答案 0 :(得分:5)

通过引用传递数组。请注意&符号,&amp;:

double stats(vector< vector< vector< double > > > & A, vector< vector< vector< double > > > & B);

按原样传递值会导致向量被复制,从而导致性能和内存开销。

如果您不需要修改stats中的向量,请考虑使用const引用:

double stats(vector< vector< vector< double > > > const& A, vector< vector< vector< double > > > const& B);