有没有办法加快以下代码的运行时间?
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 ,但这并没有增加速度。
答案 0 :(得分:3)
如果你对A使用RowMajor矩阵,那么由于更好的缓存一致性和矢量化,副本将会快得多:
Matrix<double,10,Dynamic,RowMajor> A(10,n);
但是,这也可能会减慢其他操作。
最后,请确保使用优化进行编译(例如,-O2 with gcc),并且避免使用逗号初始化程序语法可能会稍快一些:
A.row(i) = a_i;
(不确定因为这取决于编译器,但如果该副本是瓶颈那就值得尝试)