アプリ版:「スタンプのみでお礼する」機能のリリースについて

条件分岐に if switchがありますが、
ifパターン
==============================
if ( $a = 1)
{
  処理A
}
elseif ($a = 2)
{
  処理B
}
==============================
switchパターン
==============================
switch($a){
case '1':
  処理A
break;
case '2':
  処理B
break;
}
==============================

実際はもっと複雑ですが、どちらのほうが実行速度が速いのでしょうか。

A 回答 (2件)

プログラムや、挙動や仕様については分かりませんが、実際やってみました。


処理内容を個別に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秒らしい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/24 10:42

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


なので、速度は気にせず見やすい書き方をした方がよいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!