特征库加速矩阵初始化

时间:2013-07-17 14:58:06

标签: c++ eigen

有没有办法加快以下代码的运行时间?

Matrix<double, 10, Dynamic> A(10,n);
A << a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;

这里,n仅在运行时已知,并且a1,a2等是长度为n的向量。我试图近似矩阵的最大尺寸,然后使用 double,10,Dynamic,0,10,10000 ,但这并没有增加速度。

1 个答案:

答案 0 :(得分:3)

如果你对A使用RowMajor矩阵,那么由于更好的缓存一致性和矢量化,副本将会快得多:

Matrix<double,10,Dynamic,RowMajor> A(10,n);

但是,这也可能会减慢其他操作。

最后,请确保使用优化进行编译(例如,-O2 with gcc),并且避免使用逗号初始化程序语法可能会稍快一些:

A.row(i) = a_i;

(不确定因为这取决于编译器,但如果该副本是瓶颈那就值得尝试)