我正在对2个相当大(每个2 GB以上)的3D数组执行统计,并在函数内执行该计算:
double stats(vector< vector< vector< double > > > A, vector< vector< vector< double > > > B);
我相信程序花费的大量时间只是将A
和B
传递给我的函数,而不是实际执行里面的函数
这看起来合情合理吗?将这些vector
传递给函数会有很大的开销吗?如果是这样,最好的方法是什么?我知道我可以简单地将所有这些函数放在class
中,然后根据类成员引用数组,但我希望尽可能保持这些函数类不可知。
答案 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);