2013-07-17 138 views
0

有没有办法加快以下代码的运行时间?特征库加速矩阵初始化

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,但是这并没有增加速度。

回答

3

如果您使用A中的RowMajor矩阵,则副本会快很多得益于更好的缓存一致性和矢量:

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

然而,这可能还包括其他业务放缓。

最后,确保你与优化(例如,-O2用gcc)编译,这可能是稍快,以避免与逗号初始化语法:

A.row(i) = a_i; 

(不知道,因为这取决于编译器,但这是值得尝试,如果该副本是一个瓶颈)

+0

谢谢!我已经完成了最后两件事。你提到的第一件事带来了很大的提速。 –