我正在对 2 个相当大的(每个 2+ GB)3D 数组进行统计,并在一个函数内执行该计算:
double stats(vector< vector< vector< double > > > A, vector< vector< vector< double > > > B);
我相信程序花费的大量时间只是将 A
和 B
传递给我的函数,而不是实际执行统计 函数。
这看起来合理吗?将这些 vector
传递给函数是否有大量开销?如果是这样,解释这一点的最佳方法是什么?我知道我可以简单地将所有这些函数放在 class
中,然后根据类成员引用数组,但我希望尽可能让这些函数与类无关。
最佳答案
通过引用传递数组。注意 & 符号,&:
double stats(vector< vector< vector< double > > > & A, vector< vector< vector< double > > > & B);
按原样传递值会导致 vector 被复制,从而导致性能和内存开销。
如果您不需要修改 stats
中的 vector ,也可以考虑使用 const
引用:
double stats(vector< vector< vector< double > > > const& A, vector< vector< vector< double > > > const& B);
关于c++ - 如何减少将矩阵传递给函数的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890549/