使用Eigen :: Matrix4d测试的Eigen :: SelfAdjointView :: rank更新速度
与天真A + = w * w.transpose()相比 而且慢了2倍。
答案 0 :(得分:2)
对于固定大小小的表达式,您无法使用SelfAdjointView::rankUpdate
保存任何内容,而是增加了开销,因为它需要确保仅修改一半的元素。您的情况很简单
A.noalias() += w*w.adjoint();
应该给出接近最佳的代码(添加.noalias()
可以避免将其复制到临时文件中。)