-PHP Tips- 第5回 文字列の連結

文字列の連結にはいくつかの方法があるけど、どれが速いの?
【Tips】”(クォート)部分と変数を結合演算子(.)で結合!
【Description】結合演算子で連結する方法、”(クォート)内に{}で変数を記述する方法、sprintfで連結する方法を比較してみました。結合演算子で丁寧に書くのが一番高速です。

<?php
define("WORK_TIME", 1000);

function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$hoge = "abcdefghijklmn";
define("HOGE", "abcdefghijklmn");

//結合演算子の場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    $dummy = "hogehoge".$hoge."hogehoge";
}
$cat_time1 = sprintf("%.4f", getmicrotime() - $start_time);

//リテラルの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    $dummy = "hogehoge{$hoge}hogehoge";
}
$cat_time2 = sprintf("%.4f", getmicrotime() - $start_time);

//sprintfの場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    $dummy = sprintf("hogehoge%shogehoge", $hoge);
}
$cat_time3 = sprintf("%.4f", getmicrotime() - $start_time);

//結合演算子で定数の場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    $dummy = "hogehoge".HOGE."hogehoge";
}
$cat_time4 = sprintf("%.4f", getmicrotime() - $start_time);
?>
<html>
<head><title>文字列連結の比較</title></head>
<body>
結合演算子の結果:<?php echo($cat_time1);?>秒<br>
リテラルの結果:<?php echo($cat_time2);?>秒<br>
sprintfの結果:<?php echo($cat_time3);?>秒<br>
(参考)結合演算子で定数の結果:<?php echo($cat_time4);?>秒<br>
</body>
</html>
タイトルとURLをコピーしました