C++ 特征Ram消耗中的稀疏矩阵

C++ 特征Ram消耗中的稀疏矩阵,c++,ram,eigen,C++,Ram,Eigen,首先,我填写spase矩阵: SparseMatrix<double> matA; SparseMatrix matA; ,我的计数是600*10000,大约需要48 MB,并且+索引的int 24 MB=72 MB,那么为什么它在ANdroid设备中要大两倍呢?——在中,所以Eigen使用了一些特殊的tree-M结构,或者问题出在哪里 例如:A*A'…这个过程的结果产品在这种情况下需要的ram消耗量是原来的2倍。您的估计似乎是正确的,但是如果您使用insert()函数插入

首先,我填写spase矩阵:

  SparseMatrix<double> matA; 
SparseMatrix matA;
,我的计数是600*10000,大约需要48 MB,并且+索引的int 24 MB=72 MB,那么为什么它在ANdroid设备中要大两倍呢?——在中,所以Eigen使用了一些特殊的tree-M结构,或者问题出在哪里


例如:A*A'…这个过程的结果产品在这种情况下需要的ram消耗量是原来的2倍。

您的估计似乎是正确的,但是如果您使用insert()函数插入元素,那么您必须调用
.compress()
来释放自动预分配的内存。正确地为每一列预留空间应防止分配额外内存:
A.reserve(VectorXi::Constant(60010000))

请校对您的问题。这很难理解。另外,请给出行数、列数和非零数(matA.nonZeros())。每列中的行数=524000,列数=600,非零数=10000;insertBack我使用并最终确定();但现在有一个问题,但在这个填充之后,矩阵有了更大的尺寸,但可能取决于android ram服务。或者我不知道,存在的方式如何找到,这个矩阵的实际sze?你确定它只是这个矩阵对象的大小还是存在任何其他数组/对象?matA在我的代码中只有一个,但如果它在另一个应用程序或本机层的安卓中-我不知道