ifとswitch、どちらを使うべき?
【Tips】ifの方が高速!
【Description】同じ変数の複数の値をチェックする場合、if~else if~elseと、swith~case~defaultの2通りが考えられます。以下のソースではifの方が高速です。しかし実際には、見通しという意味でswitchを使った方が良いと思われます。また、
if($hoge == 1){
} else if($fuga == 1){
というように違うレベル(変数)のものを1つのif構造で記述すると見通しが悪くなるので、
if($hoge == 1){
} else {
if($fuga == 1){
とするべきでしょう。
<?php
define("WORK_TIME", 10000);
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$flag = 0;
$dummy = "";
//ifの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
if(!$flag){
$flag = 1;
} else if($flag == 1){
$flag = 2;
} else {
$flag = 0;
}
}
$if_time = sprintf("%.4f", getmicrotime() - $start_time);
//switchの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
switch($flag){
case 0:
$flag = 1;
break;
case 1:
$flag = 2;
break;
default:
$flag = 0;
}
}
$switch_time = sprintf("%.4f", getmicrotime() - $start_time);
?>
<html>
<head><title>ifとswitchの比較</title></head>
<body>
ifの結果:<?php echo($if_time);?>秒<br>
switchの結果:<?php echo($switch_time);?>秒<br>
</body>
</html>