我有一个函数,它要求我传递一个相当大的矩阵(我使用 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 中慢,显然我想加快速度!
最好的,
本