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文の方がわずかに速い ようです。 この後何回やっても同じ結果でした。
どちらを使う?
好みの問題ではありますが、可読性の観点から三項演算子を嫌う人は多いです。 しかも、わずかではありますが、処理速度まで遅いとなると利用する価値が低いですね。 ただ、状況によっては、三項演算子を使用しても良いと私は考えます。