phpのecho, printの早いのはどっち?文字列は'aaa' と"aaa"早いのはどっち?
本日は2本立てでお送りします。
使う目的
- 普段から活発的に論争になる echo vs. print と 'aaa' vs. "aaa" に自らの手で決着をつける
環境
php5.5
方針
- 同じ文章を表示し続ける
- 一定回数表示した後に時間を計測する
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"); と書くことにしましょう。