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

drj*_*rm3 0 c++ memory function

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

double stats(vector< vector< vector< double > > > A, vector< vector< vector< double > > > B);
Run Code Online (Sandbox Code Playgroud)

我认为,大量的由程序所花费的时间仅仅是通过AB我的功能,而不是实际执行统计里面的功能.

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

atk*_*ins 5

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

double stats(vector< vector< vector< double > > > & A, vector< vector< vector< double > > > & B);
Run Code Online (Sandbox Code Playgroud)

按原样传递值将导致向量被复制,从而产生性能和内存开销.

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

double stats(vector< vector< vector< double > > > const& A, vector< vector< vector< double > > > const& B);
Run Code Online (Sandbox Code Playgroud)