Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
有没有办法加快以下代码的运行时间?
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但这并没有提高速度。
如果您对 A 使用 RowMajor 矩阵,那么由于更好的缓存一致性和矢量化,副本将更快:
Matrix<double,10,Dynamic,RowMajor> A(10,n);
但是,这也可能会减慢其他操作。
最后,确保您在编译时使用了优化(例如,使用 gcc 的 -O2),并且使用以下命令避免逗号初始值设定项语法可能会稍微快一些:
A.row(i) = a_i;
(不确定,因为这取决于编译器,但如果该副本是瓶颈,那值得尝试)