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)
我认为,大量的由程序所花费的时间仅仅是通过A和B我的功能,而不是实际执行统计里面的功能.
这看起来合情合理吗?将这些vectors传递给函数会有很大的开销吗?如果是这样,最好的方法是什么?我知道我可以简单地将所有这些函数放在a中class,然后根据类成员引用数组,但我希望尽可能保持这些函数类不可知.
通过引用传递数组.请注意&符号,&:
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)