gpt4 book ai didi

c++:将特征定义的矩阵传递给函数,并使用它们——最佳实践

转载 作者:行者123 更新时间:2023-11-28 06:34:05 25 4
gpt4 key购买 nike

我有一个函数需要我传递一个相当大的矩阵(我使用 Eigen 创建)- 范围从 200x200 -> 1000x1000。该功能比这更复杂,但它的基本结构是:

#include <Eigen/Dense>

int main()
{
MatrixXi mIndices = MatrixXi::Zero(1000,1000);
MatrixXi* pMatrix = &mIndices;
MatrixXi mTest;

for(int i = 0; i < 10000; i++)
{
mTest = pMatrix[0];
// Then do stuff to the copy

}
}

运行更大尺寸的矩阵需要更长时间的原因是因为当我将它设置为等于 mTest 时需要更长的时间来为数组找到 RAM 中的可用空间?当我切换到稀疏数组时,这似乎快了很多。

如果我需要传递大型矩阵,并且我想尽量减少矩阵大小对运行时的增量影响,那么这里的最佳做法是什么?目前,同一个程序在 C++ 中的运行速度比在 Matlab 中慢,显然我想加快速度!

最好的,

最佳答案

在您显示的代码中,您将 1,000,000 个元素复制 10,000 次。循环中的赋值创建一个拷贝。

通常,如果您要将特征矩阵传递给另一个函数,则通过引用接受参数可能会有好处。

然而,从您的代码中并不清楚您要实现的目标。

关于c++:将特征定义的矩阵传递给函数,并使用它们——最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com