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但这并没有提高速度。

4

1 回答 1

3

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

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

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

最后,确保您在编译时使用了优化(例如,使用 gcc 的 -O2),并且使用以下命令避免逗号初始值设定项语法可能会稍微快一些:

A.row(i) = a_i;

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

于 2013-07-17T15:35:12.433 回答