未分類

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

投稿日:

if文 と 三項演算子

可読性という点において、違いがあるとしか認識していなかったこの2つに

もしパフォーマンスの違いがあった場合、今後の書き方に大きな違いが出るため、確かめてみようと思います。

 

検証方法

1~10の乱数を作成し、

1~5の場合は、↓を出力

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 秒

 

パッと見あんまり変わらないように見えますね。

でもこれは if文の方がわずかに速い ようです。

この後何回やっても同じ結果でした。

 

どちらを使う?

好みの問題ではありますが、可読性の観点から三項演算子を嫌う人は多いです。

しかも、わずかではありますが、処理速度まで遅いとなると利用する価値が低いですね。

ただ、状況によっては、三項演算子を使用しても良いと私は考えます。

-未分類

Copyright© エンジニアの階段 , 2019 All Rights Reserved Powered by STINGER.