[PHP-users 16203]Re: case文での比較演算子について
Masayuki AOKI
info @ martin.bz
2003年 6月 24日 (火) 20:55:12 JST
martinです。
濱井 wrote:
|確かに大差ないと思います。性能もほぼ同じでしょう。
興味深くこの一連のスレッドを眺めていましたが,少し気になったので,同じ結
果を返すと思われる以下の3式について,マニュアルにも書いてある式でミリ秒
単位の時間計測をしてみました。
(式1):
$i = 50;
if ($i<=20){
$size = 1;
}elseif($i<=100){
$size = 5;
}else{
$size = 10;
}
(式2): // 実用性はともかくこの手の発想は好きです。
$i = 50;
switch(true){
case ($i<=20):
$size = 1;
break;
case ($i<=100):
$size = 5;
break;
default:
$size = 10;
}
(式3): // 個人的はこれを使うかな。
$i = 50;
$size = ($i<=20) ? 1 : (($i<=100) ? 5 : 10);
これを以下のタイムウォッチで計測
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
$time_start = getmicrotime();
$n=0;
while($n<1000){
// ここに上の3式を各々入れて比較
$n++;
}
$time_end = getmicrotime();
$finish = ($time_end - $time_start);
この比較が妥当かどうか分かりませんが,PHP4.3.1+Apache2.0.45 in WinXP+IE6.0
という環境では,遅い順に(と言っても人間の認知外ですが)
(式2) < (式3) < (式1)
となりました。予想では(根拠なし) (式2) < (式1) < (式3) だったんですが。
/*
Masayuki AOKI: maoki @ bioreg.kyushu-u.ac.jp
HomePage: http://martin.bz
*/
PHP-users メーリングリストの案内