速度比較IT

if文 と 三項演算子 パフォーマンスに違いはあるのか

if文 と 三項演算子 可読性という点において、違いがあるとしか認識していなかったこの2つに もしパフォーマンスの違いがあった場合、今後の書き方に大きな違いが出るため、確かめてみようと思います。

検証方法

110の乱数を作成し、 15の場合は、↓を出力 6~10の場合は、↑を出力 という処理を1万回繰り返した処理速度を取得。 言語はPHPを使用しています。 if文の場合

$time_start = microtime(true);
    for($i=1;$i<=10000;$i++){
        if(rand(1,10) > 5){
            echo '↑';
        }else{
            echo '↓';
        }
    }
echo "<br>";
$time = microtime(true) - $time_start;
echo "{$time} 秒";

三項演算子の場合

$time_start = microtime(true);
    for($i=1;$i<=10000;$i++){
        echo rand(1,10) > 5 ? '↑' : '↓';
    }
echo "<br>";
$time = microtime(true) - $time_start;
echo "{$time} 秒";

実行してみる

if文の場合 1回目: 0.011248781681061 秒 2回目: 0.0097902989387512 秒 3回目: 0.011497755050659 秒 4回目: 0.0096882843971252 秒 5回目: 0.012277138233185 秒 三項演算子の場合 1回目: 0.012508795261383 秒 2回目: 0.011866343021393 秒 3回目: 0.012540700435638 秒 4回目: 0.011792101860046 秒 5回目: 0.012760272026062 秒 パッと見あんまり変わらないように見えますね。 でもこれは i****f文の方がわずかに速い ようです。 この後何回やっても同じ結果でした。

どちらを使う?

好みの問題ではありますが、可読性の観点から三項演算子を嫌う人は多いです。 しかも、わずかではありますが、処理速度まで遅いとなると利用する価値が低いですね。 ただ、状況によっては、三項演算子を使用しても良いと私は考えます。