【问题标题】:Eigen matrix assignment taking a long time -- is there a solution?特征矩阵分配需要很长时间——有解决方案吗?
【发布时间】:2015-04-24 15:46:27
【问题描述】:

我正在尝试通过以下方式在特征矩阵中创建相当大的矩阵(用于存储点数据)

void MyFunction(Eigen::MatrixBase<Derived1>& X) {

    // Create empty matrix
    Eigen::Matrix3Xf Q = Eigen::Matrix3Xf::Zero(3, X.cols());

其中 X.cols 约为 300,000。当我在调试模式下单步执行代码时,这需要很长时间,因此很难测试我的代码。有没有办法更快地分配矩阵?我正在考虑使用 Eigen::Map 类将指针传递给浮点数组。任何见解都非常感谢。

【问题讨论】:

  • 花很长时间是什么意思?在这里,使用调试信息并且没有编译器优化,这一步大约需要 2 毫秒......不要告诉我你正在进入这个任务?任何调试器都允许单步执行语句...
  • 嗯,在我的系统上,我们正在谈论接近一两分钟。将仔细研究以了解为什么需要这么长时间。
  • 好的,我已经在一个单独的项目中重新创建了核心代码位,并且它运行(如 ggael 所建议的)在几毫秒内。我想这意味着这与我的具体实现有关。有没有人知道什么可能导致这种放缓?有什么特别的内含物吗?这发生在类的入口点,所以在它之前甚至没有那么多代码运行。感谢您提前提供任何帮助。

标签: c++ matrix eigen


【解决方案1】:

我的愚蠢错误,在发布模式下调试我的代码(vs2013)。如果要单步执行代码,请确保您的设置处于调试状态。正如 ggael 所建议的那样,更改此设置可将一切加速到几毫秒。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多