覚書。

 

A. -O3とMSVCの最適化レベルについて
GCC / Clang 編(Unix系に多い)
    -O0:最適化なし
    -O1:軽めの最適化
    -O2:基本的な最適化(バランス型)
    -O3:最大限の最適化(アンローリング含む・コード肥大化あり)
    -Ofast:未定義動作上等(規格違反でも速度最優先)

-O3 では明示的にループアンローリング等が入る。

 

MSVC 編(Visual Studio系)
MSVCの最適化オプション(IDEの設定などで使うもの):

オプション    説明
/Od    最適化なし(デバッグ向き)
/O1    サイズ優先最適化(コード小さく)
/O2    スピード優先最適化(ガチ)
/Ox    最大限最適化(/O2 + 明示的強化)※非推奨
/GL    リンク時のコード生成最適化(LTCG)

 MSVCにおける/O2が、GCCでの-O3に相当する最強チューニング。
 MSVCでは:
    ループアンローリングも /O2 で自動的に入る(条件付き)
    /Oxはマイクロソフトも「非推奨」っぽく扱っている(古い)
 参考:
    /O2 + /GL + /favor:INTEL64 + /arch:AVX2 あたりでガチ組み

引用 ChatGPT