狐の避暑地

PHPやJavaでプログラミングをしてます。狐が好きです。備忘録やゲームについて置いてあります。

phpのecho, printの早いのはどっち?文字列は'aaa' と"aaa"早いのはどっち?

 本日は2本立てでお送りします。

使う目的

  • 普段から活発的に論争になる echo vs. print と 'aaa' vs. "aaa" に自らの手で決着をつける

環境

php5.5

方針

  1. 同じ文章を表示し続ける
  2. 一定回数表示した後に時間を計測する
echo vs. print

 実行すると数秒間動作が停止することがあります。一番下の行に結果が表示されてるので比較してみてください。

<?php
define(TEST_COUNT, 10000);

define(NUM1, 63);
define(NUM2, 48);
define(NUM3, 94);
define(STR1, "this ");
define(STR2, "is ");
define(STR3, "TEST ");

echo "<p>REG1: echo\"\" vs. print(\"\")</p>";
$starttime[1] = microtime();
$loopcount = 1;
while($loopcount <= TEST_COUNT){
    echo "<p>" . $loopcount . ":" . (NUM1 + NUM2 + NUM3) . STR1 . STR2 . STR3 . "endTest" . "</p>"; 
    $loopcount++;
}
$endtime[1] = microtime();

$starttime[2] = microtime();
$loopcount = 1;
while($loopcount <= TEST_COUNT){
    print("<p>" . $loopcount . ":" . (NUM1 + NUM2 + NUM3) . STR1 . STR2 . STR3 . "endTest" . "</p>"); 
    $loopcount++;
}
$endtime[2] = microtime();


for($i=1; $i<=2; $i++){
    $result[$i] = $endtime[$i] - $starttime[$i];	
}
$currentversion = phpversion();
echo <<< EOF
<p>RESULT (phpVersion:{$currentversion})</p>
echo :{$result[1]}ms <br />
print:{$result[2]}ms <br />
EOF;
?>
' ' vs. " "
<?php
define(TEST_COUNT, 10000);

define(NUM1, 63);
define(NUM2, 48);
define(NUM3, 94);
define(STR1, "this ");
define(STR2, "is ");
define(STR3, "TEST ");


echo "<p>REG2: echo\' \' vs. echo\" \"</p>";
$starttime[1] = microtime();
$loopcount = 1;
while($loopcount <= TEST_COUNT){
    echo "<p>" . $loopcount . ":" . (NUM1 + NUM2 + NUM3) . STR1 . STR2 . STR3 . "endTest" . "</p>"; 
    $loopcount++;
}
$endtime[1] = microtime();

$starttime[2] = microtime();
$loopcount = 1;
while($loopcount <= TEST_COUNT){
    echo '<p>' . $loopcount . ':' . (NUM1 + NUM2 + NUM3) . STR1 . STR2 . STR3 . 'endTest' . '</p>'; 
    $loopcount++;
}
$endtime[2] = microtime();


for($i=1; $i<=2; $i++){
    $result[$i] = $endtime[$i] - $starttime[$i];	
}

$currentversion = phpversion();

echo <<< EOF
<p>RESULT (phpVersion:{$currentversion})</p>
"" :{$result[1]}ms <br />
'' :{$result[2]}ms <br />
EOF;
?>

結果[

REG1:echo vs. print
RESULT (phpVersion:5.5.19)
echo :0.092233ms
print:0.092206ms 

僅かにprint()のほうが早い

REG2:'' vs. ""
RESULT (phpVersion:5.5.19)
"" :0.097301ms
'' :0.117751ms 

" "を使用したほうが早い

まとめ
  • echoとprintには10000表示でマイクロ秒程度の差しかないため、どちらを使っても差し支えない
  • ""を使用したほうが僅かに早かったが、変数を""の中で展開することを考えるとまた別の結果になると思う

 と、いうわけで最速を目指すなら print("hogehoge"); と書くことにしましょう。