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