私はこのスレッドを見て、私は同じ質問を持っていましたが、この1は本当に答えていない:、GCC standard optimizations behaviorGCC handpicking最適化
私はパフォーマンスの信じられないほどのブーストを引き起こしているまさにフラッグを把握しようとしていますO1で私はまず、g++ -O1 -Q --help=optimizers
を使ってどのフラグが設定されているのかを確認し、有効なフラグをそれぞれ取得し、それらをg ++でコンパイルするために使用しました。しかし、出力結果は異なっていました(バイナリ自体は異なるサイズのものでした)。
g ++の最適化をどのように手作業で行うのですか?これはできませんか?
パフォーマンスが大幅に向上している場合、オプティマイザがその仕事をするのではなく、なぜそれらを手作りしたいのですか? –
-O *に含まれるすべての最適化がスタンドアロンスイッチとして利用できるわけではありません。 – SergeyA
@MattJordanパフォーマンスの向上の原因を突き止めたいと思っています。私はそれがキャッシュの使用が良くなった結果だと強く思っていますが、私は簡単に問題の規模を拡大することはできません。なぜなら、なぜランタイムに最も影響を与える最適化を見つけるのか、プログラムのローカリティが向上します。そうであれば、その改善は帯域幅に束縛された結果であることは、いくらか明らかです。そうでなければ、それは別のものですが、どの最適化がそれを引き起こしたかを知ることは助けになります。 –