作爲一個較大問題的一部分,我在處理特徵中的稀疏矩陣時遇到了性能瓶頸。Eigen程序中的性能瓶頸
我需要從稀疏矩陣(G
)中的每個元素中減去一個浮點數(x
),其中包括係數爲零的位置。因此,零個元素應該有一個價值-x
我這樣做,此刻的方式如下:
//calculate G
x=0.01;
for(int i=0;i<rows;i++){
for (int j=0; j<cols; j++) {
G.coeffRef(i, j) -= x;
}
}
當G的尺寸較大,這簡單的計算是一個瓶頸。
我還試圖以稀疏矩陣G變換成一個緻密的和中減去P(填充有值x的矩陣):
MatrixXd DenseG=MatrixXd(G);
x=0.01;
for(int i=0;i<rows;i++){
for (int j=0; j<cols; j++) {
DenseG(i, j) -= x;
}
}
這種方法是如此之快。然而,我只是想知道是否還有其他解決方法不涉及將G轉換爲密集型,在非常大的矩陣情況下需要大量內存。