我使用Eigen和大矩陣,我正在考慮如何優化我的代碼,重點是減少動態內存分配。Eigen中沒有拷貝乘法
我試圖乘以兩個矩陣。這些矩陣有時會變化一些,但它們的大小保持不變。
我想看到乘法輸出到預定義的矩陣(這將有內存已分配給它)。
所以這裏的我在做什麼的例子:
Eigen::MatrixXd left, right,result;
// ...
result = left * right;
// ... left and right values change a little
result = left * right;
而且我正在尋找一個解決方案,將是這樣的:
void Multiply(
Eigen::MatrixXd const& left,
Eigen::MatrixXd const& right,
Eigen::MatrixXd& result);
void Example()
{
Eigen::MatrixXd left, right, result;
// ...
Multiply(left, right, result);
// ...
Multiply(left, right, result);
}
目的基本上是重複使用因爲在理論上它不應該改變尺寸。我正在考慮使用operator*=
,但我有點意識到它仍然需要一箇中間矩陣來進行計算。
你檢查'結果=左* right'實際上重新分配時的結果已經有了合適的尺寸? –