sidewalkcafe blog

日々是好日

暗黙の型変換はそんなに遅いのか

前に出た話題
暗黙の方変換の速度比較

//繰り返し
$r = 1000000 ;
//時間計測1
$start = microtime(true);
for($i = 0; $i < $r; $i++) {
	$d = "0";
	$d ++ ;
}
$end = microtime(true);
echo "処理時間1:" . ($end - $start) . "秒
"; //時間計測2 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d ='0'; $d = (integer)$d; $d ++ ; } $end = microtime(true); echo "処理時間2:" . ($end - $start) . "秒
"; //時間計測3 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d =0; $d ++ ; } $end = microtime(true); echo "処理時間3:" . ($end - $start) . "秒
";

1=約0.13秒
2=約0.16秒
3=約0.10秒


あれ、そんな違わない・・・
というかいちいち型変換してた方が遅い・・・?


という訳で追試

//繰り返し
$r = 1000000 ;
//時間計測1
$start = microtime(true);
for($i = 0; $i < $r; $i++) {
	$d = "0";
	if($d == 0){$d ++ ;}
}
$end = microtime(true);
echo "処理時間1:" . ($end - $start) . "秒
"; //時間計測2 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d ='0'; $d = (integer)$d; if($d == 0){$d ++ ;} } $end = microtime(true); echo "処理時間2:" . ($end - $start) . "秒
"; //時間計測3 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d =0; if($d == 0){$d ++ ;} } $end = microtime(true); echo "処理時間3:" . ($end - $start) . "秒
";

1=約0.20秒
2=約0.18秒
3=約0.10秒


比較が入ると違うなー
そして安定の無変換
最初から数字指定しとけと


でもSQliteのデータは数字指定でも文字で記録されてるとか、potiboardのconfigは定数の指定が数字でも文字(括弧付き)になってるとか