私は先週、再帰的なBranch&CutアルゴリズムをMatlabからC ++に移植することに費やし、ソリューション時間の大幅な短縮を期待していましたが、信じられないほどのことですが、その逆でした。今はC++の専門家ではないので、眠そうなプロファイラーをダウンロードして、潜在的なボトルネックを見つけようとしました。私はこれから正しい結論を引き出しているのか、それとも完全に間違った方向を見ているのかを尋ねたいと思います。
コードを137秒間実行します。これは、プロファイラーが表示するものです(以下の他の多くのエントリですが、重要ではありません)。
したがって、これを正しく行うと、98秒が新しいオブジェクトの作成に費やされ、34秒がメモリの解放(つまりオブジェクトの削除)に費やされました。
私は自分のコードを調べて、どこでもっとうまくやれるかを調べますが、そのような振る舞いを引き起こす頻繁な間違いや悪い習慣についてのヒントがあるかどうかも尋ねたいと思いました。私の頭に浮かぶことの1つは、コードで多くの一時的なstd :: vectorを使用して計算を行うため、処理が遅くなる可能性があることです。
あなたが盲目になるのを防ぐために、私は少し調べる前にコードを投稿しませんが、これを自分で解決できない場合は戻ってきます。