タグ

Programmingとx86に関するpaellaのブックマーク (1)

  • max, min 関数の最適化と x86 の cmov 命令 - yuyarinの日記

    max 関数や min 関数は C 言語だと自分で書かないといけないので int max(int a, int b) { return a>b?a:b; } などと書いたりするのだが,比較を行っているので分岐が発生するから遅くなると思い,これって当に速いのかと思って調べてみた. 実験 以下の5つのコードを用意した.これらをそれぞれ max 関数の実装とした.検証用のコードは最後に載せる.PHP でランダムな2数値を作ったデータを 1,000,000 組用意し,入力データとして配列に読み込んだあと,ループで max 関数を実行した.このループの前後で gettimeofday で時間を測り,所要時間を算出した.それぞれの実装に対し所要時間の5回の平均をとって比較した.コードは gcc version 4.2.1 (Apple Inc. build 5664) でオプション無しでコンパイルし

    max, min 関数の最適化と x86 の cmov 命令 - yuyarinの日記
    paella
    paella 2010/11/24
    cmovまたはsetccの命令は、計算時間の増加分が、予想される分岐の予測ミスのペナルティーより小さい場合にのみ使用するべきである。ふむふむ。
  • 1