グラフを表す大きなクラスがあります。複合型の複数のコンテナー (ベクトルおよびセット) を含むこのクラス。検索中に、結果のループを避けるためにグラフを変更する必要があります。多くの検索を実行する必要があるため、クラスを元の状態に頻繁に復元する必要があります。
現在、保存されたコンティナーを変更されたコンティナーに単純に割り当てています。
void Graph::restore(){
mEdges=mSafeEdges; //std::vector<Edge> Edge has no heap based data
mNodes=mSafeNodes; //std::vector<GraphNode> A Graph Node contains std::set<int>
}
前述したように、エッジとノードは複雑で、各ノードにはたとえばセットが含まれています。コンテナーの各ペアのサイズは同じです。私のコードをプロファイリングすると、単純な復元機能がプログラムの主要なボトルネックであり、実行ごとに約 6 ミリ秒かかっていることがわかりました。エッジ ベクトルのコピーには 1.5 ミリ秒かかり、ノードのコピーには 4.5 ミリ秒かかります。複雑なタイプのコンテナをコピーする、または少なくとも Edge Vector をコピーするためのより良い、より高速な方法はありますか?