この質問では、Visual Studio 2012 と GCC 4.7 に焦点を当てます。
一方では、プロファイル ガイド付きコンパイルは、実行時にコードを計測し、2 回目のコンパイル中にこの情報を使用することで、分岐予測を最適化します。一方、多くのコンパイラは、どの分岐が最も可能性が高いかをコンパイラに示唆する拡張機能を提供しています: GCC が提供するもの__builtin_expect
と Visual Studio が提供するもの__assume
です。
両方のコンパイラ拡張機能を使用してコードを書き直すことができるように、(どちらかのコンパイラの) プロファイル ガイド情報を抽出する方法はありますか? 目標は、独自のバージョンのバイナリを再コンパイルすることをいとわない人々のために、「最適化された」ソース コードを提供することです。