タグ

Performanceと最適化に関するItisangoのブックマーク (2)

  • とても賢いコンパイラーの逆襲

    The Hacks of Life: The Dangers of Super Smart Compilers Clangの最適化が未定義の挙動を検出してコード片を消し去ってしまったことに引っかかった開発者の嘆き。 今日初めて、RenderFarmのDSF render(global scenaryを作成するのに使っている内部ツール)をClangで最適化コンパイルして実行した。 結果はsegfaultだった。これは驚きだ(そして自身消失だ)。というのも、最適化していないデバッグビルドは問題なく動くし、GCCでコンパイルされた最適化ビルドも正しく動く。-O0ではバグがない(つまり#if DEVコードのバグではない)ので、「最適化は何をやっているんだ」の時間だ。 大量のprintfと試行錯誤の結果、最適化は以下のようなコード片を丸ごとすっ飛ばしていることが判明した。 for(vector<me

  • コンパイラー最適化入門: 第1回 SIMD 命令とプロセッサーの関係 | iSUS

    この OS のシステム要件が求めるプロセッサーが、SIMD 命令を使用する最適化オプションに影響します。例えば Windows Vista Home Basic までをサポートすると想定した場合、800MHz 以上のプロセッサーが求められていますから、対象となるプロセッサーは一部の Pentium III(450MHz – 1.4Gseisei Hz)と Pentium 4(1.3GHz – 3.8GHz)以上となります。まあ、少しぐらい動作クロックが違っても問題はないのですが。 この2つのプロセッサーには、サポートする SIMD 命令セットに違いがあり(Pentium III – SSE、 Pentium 4 – SSE2)、コンパイラーは対象とするプロセッサーが実行できる命令セットを使用したバイナリーを生成しなければいけません。この場合、SSE2 を利用したバイナリーを生成すると、Pe

    コンパイラー最適化入門: 第1回 SIMD 命令とプロセッサーの関係 | iSUS
  • 1