【发布时间】:2017-03-10 07:07:08
【问题描述】:
我可以访问许多矩阵库,但对于这个项目,我使用的是 Eigen,因为它的编译时间定义和包含 SVD。
现在,我正在做以下操作:
Eigen::Matrix<double,M,N> A; // populated in the code
Eigen::Matrix<double,N,N> B = A.transpose() * A;
据我所知,这会复制 A 并形成转置,然后再乘以 A。此操作在相对较小的矩阵(M=20-30,N=3)上执行,但每秒数百万次,这意味着它必须尽可能快。
我读到使用以下方法更快:
B.noalias() = A.transpose() * A;
我可以编写自己的子例程,接受 A 作为输入并填充 B,但我想知道是否存在使用最少周期的有效的现有实现。
【问题讨论】:
标签: c++ performance eigen matrix-multiplication