文字列を比較するstrcmp関数は何のためにあるの?
【Tips】strcmpを使う方が僅かに高速!
【Description】単純に同じかどうかを比較するのであれば、$hoge == “fuga”をテストする方法と、!strcmp($hoge, “fuga”)とする方法がありますが、後者の方が非常に僅かながら高速です。
<?php
define("WORK_TIME", 50000);
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$hoge = "this is a text for bench-mark";
$fuga = "this is a text for bench-marks";
//strcmpを使わない場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
if($hoge == $fuga){
$dummy = $hoge;
}
}
$no_strcmp_time = sprintf("%.4f", getmicrotime() - $start_time);
//strcmpを使う場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
if(!strcmp($hoge, $fuga)){
$dummy = $hoge;
}
}
$strcmp_time = sprintf("%.4f", getmicrotime() - $start_time);
?>
<html>
<head><title>strcmpの比較</title></head>
<body>
strcmpを使わない場合の結果:<?php echo($no_strcmp_time);?>秒<br>
strcmpを使う場合の結果:<?php echo($strcmp_time);?>秒<br>
</body>
</html>