トップ «前の日記(2005-05-08) 最新 次の日記(2005-05-18)» 編集

人徳ゼロ日記


2005-05-12

_ GCCで実行結果を使った最適化

職場で雑談をしてたとき、コンパイラの最適化の話題になりました。「JavaのHotspot VMは実行時の情報(分岐をどちらに進む回数が多いか、等)を基に最適化できるからCよりも速いことがある」という話をしたら、「GCCにはプロファイル結果を使って最適化できる」という話が出ました。そんな機能があったのか。

プロファイルをとるには、コンパイル時に-fprofile-arcsオプションをつけて置きます。生成したバイナリを実行するとプロファイル結果がファイルに残ります。再度-fbranch-probabilitiesというオプションを指定してコンパイルするとプロファイル結果を使って最適化してくれるそうです。

どのくらい速くなるのだろうか。なんだかんだいってI/Oネックになっている場合が多いから、ちょっとくらい実行が速くなっても影響ないかもしれない。ばりばりループ回して計算するようなプログラムには有効でしょうね。