ネストされたベクトル内に格納される巨大な行列を作成しています:
typedef vector<vector<pair<unsigned int, char>>> Matrix;
外側のベクトルには、最終的に最大 220 ペアを含む最大 400.000 個のベクトルが含まれます (ほとんどのベクトルはそれ以下です)。これには約 1GB の RAM が必要で、次のように実行されます。
Matrix matrix;
for (unsigned int i = 0; i < rows; i++) {
vector<pair<unsigned int, char>> row;
for (unsigned int j = 0; j < cols; j++) {
// ...calculations...
row.push_back( pair<unsigned int, char>(x, y) );
}
matrix.push_back(row);
}
最初の 20% は非常に高速ですが、外側のベクトルが大きくなるほど、プロセス全体が遅くなります。ある程度の最適化は可能だと確信していますが、私はこの分野の専門家ではありません。これをスピードアップするための簡単なトリックはありますか? または、私の試みに重大な誤りがありますか?