【发布时间】: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 所建议的)在几毫秒内。我想这意味着这与我的具体实现有关。有没有人知道什么可能导致这种放缓?有什么特别的内含物吗?这发生在类的入口点,所以在它之前甚至没有那么多代码运行。感谢您提前提供任何帮助。