• ベストアンサー

条件分岐 if(elseif) switchの実行速度

条件分岐に if switchがありますが、 ifパターン ============================== if ( $a = 1) {   処理A } elseif ($a = 2) {   処理B } ============================== switchパターン ============================== switch($a){ case '1':   処理A break; case '2':   処理B break; } ============================== 実際はもっと複雑ですが、どちらのほうが実行速度が速いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#15164
noname#15164
回答No.1

プログラムや、挙動や仕様については分かりませんが、実際やってみました。 処理内容を個別に10000回ループさせて、時間を計るだけですが。 こういう細かい事にこだわっているHPもありますので、探してみてはどうですか? 似たような処理、forとwhileでどっちが早いかとか、から始まって、アルゴリズム研究まで。 乱数使って、乱数によりけりで値を変えてますが、10000回もすれば偏りも減るでしょう。 $start = microtime(); for($i=0;$i<10000;$i++){ $ransuu = rand(0,9); //3パターン //ifだけの場合 //if-elseifを使う場合 //switch-caseを使う場合 } //差を計算 $end = microtime(); $sa = $end - $start; $sa = $sa*10000; printf("%05d",$sa); 結果は、 3位 if文だけ。 2位 switch-case 1位 if-elseif-else 私は、if-elseifだと見にくくなるので、冒頭ではswitch-caseを使う事にしてます。なんかかっこいいし。(w 1位は3位の処理時間で、2倍違うけど、2.8GのCPUで150マイクロ秒しか違わない。 マイクロ秒=100万分の1秒らしい。

realforce
質問者

お礼

150マイクロ秒の違いですか、自分の扱いやすいスタイルでコーディングしたほうがよさそうですね。 有難うございました。

その他の回答 (1)

  • satoh
  • ベストアンサー率77% (17/22)
回答No.2

これ以外にもwhile文とdo~while文なんかもありますけど、過去にいろいろ試したことがあるのですが、PHPのバージョンや環境(OSやらZend Optimizerやら)によって全然違ってきてしまいます。 なので、速度は気にせず見やすい書き方をした方がよいと思います。

関連するQ&A