Eigen::SelfAdjointView::rankUpdate slower than A += w*w.tran



测试了 Eigen::SelfAdjointView::rankUpdate with Eigen::Matrix4d

与朴素 A += w*w.transpose(( 相比 而且慢了 2 倍。

  1. 我做错了什么?
  2. 我可以加快此计算速度吗?

对于小型固定大小的表达式,您无法使用SelfAdjointView::rankUpdate保存任何内容,而是会增加开销,因为它需要确保只修改一半元素。在您的情况下,一个简单的

A.noalias() += w*w.adjoint();

应该给出接近最佳的代码(添加.noalias()避免将副本复制到临时代码中(。

相关内容

  • 没有找到相关文章

最新更新