C ++ 11は移動セマンティクスを導入しています。たとえば、C ++ 03がコピー構築またはコピー割り当てを実行する必要がある状況でコードのパフォーマンスを向上させることができます。この記事では、C + 11でコンパイルすると、次のコードで5倍の速度が得られると報告しています。
vector<vector<int> > V;
for(int k = 0; k < 100000; ++k) {
vector<int> x(1000);
V.push_back(x);
}
科学計算のコンテキストでC ++ 11移動セマンティクスの影響は何ですか?
この質問は一般的な質問に興味がありますが、具体的には、Boostライブラリを使用して記述された有限要素コードの移動セマンティクスにも興味があります。ブーストバージョン1.47.0(ブーストリリースノートには移動のセマンティクスが1.48.0で導入されていると記載されているため)とブーストバージョン1.53.0 を使用して、独自のC ++ 03コードの一部をテストしましたが、あまり改善されていません。システムマトリックスの解決はワークロードの大部分を構成するため、boost::numeric::ublas::vector
/のコピー構築を行わなくても済むことによる節約は目立たないmatrix
と思いますboost::function
。
編集:実際には、移動のセマンティクスが実装されているように見えますboost::function
(バージョン1.52.0リリースノートを参照)。には移動のセマンティクスについての言及はありません。boost::numeric
ソースを確認して確認し、右辺値の参照がないようです。