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

标签 c++ function memory

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

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

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

这看起来合理吗?将这些 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/

相关文章:

javascript - 这两个函数定义有不同的行为

java - java 或 C++ 中的堆管理器如何跟踪线程或进程使用的所有内存位置?

memory - 将大量二进制数据从 u-boot 传递到 linux 内核

c++ - 定义内联函数的正确方法是什么?

引用变量的 C++ 初始化列表

c++ - 使用通用基础和布局有效的 C++ 来转换非多态结构吗?

c++ - 在 MFC 中编辑控件的 CString

c++ - 编写一个通用的遍历函数,允许灵活地处理具有不同参数的多个函数

c - 在链表中搜索最接近设定值的值

android - 在 Android 中以正确的大小解码位图