ブログ
8.42016
PHP の print と echo の違いとは

WordPress の内部ロジックは主に PHP というプログラム言語で構築されています。
テーマを編集したり、プラグインなどを実装する際、PHP のルールに則ってプログラムを実装し構築していきます。
PHP 自体はサーバー内で実行されますが、昨今、表示速度を求められたり、アクセスが多い場合わずかな差により大量のアクセスを捌けるようになったり、実行速度を全体的に改善できるようになったりします。
テーマやプラグインなどでは、思い思いの文字列を出力する機会も多いと思いますが、PHP では文字列の出力はおもに「print」と「echo」の2つの方法があり、数々の議論が行われています。
どちらを使うべきか悩んだ経験はないでしょうか?
実際に実行した場合にどれだけ差が出るか?~print VS echo~
実際にテストプログラムを作成し、ブラウザで表示した結果の10回平均を取得します。
print版
<?php
$time_begin = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
print "${i} times.\n";
}
$time_end = microtime(true);
$time = $time_end - $time_begin;
print "exec time = ${time} sec.";
echo版
<?php
$time_begin = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
echo "${i} times.\n";
}
$time_end = microtime(true);
$time = $time_end - $time_begin;
print "exec time = ${time} sec.";
実行結果は以下のようになりました。(単位:秒)
| echo | ||
|---|---|---|
| 1回目 | 10.409487962723 | 10.539283037186 |
| 2回目 | 10.677564144135 | 10.435059070587 |
| 3回目 | 11.312433958054 | 10.485270023346 |
| 4回目 | 10.197618961334 | 10.367513895035 |
| 5回目 | 10.201102018356 | 10.177443981171 |
| 6回目 | 10.718124866486 | 10.605888843536 |
| 7回目 | 10.490163087845 | 10.535187959671 |
| 8回目 | 10.096682071686 | 10.149405002594 |
| 9回目 | 10.385648012161 | 10.739960908890 |
| 10回目 | 10.462270021439 | 10.344215869904 |
| 平均 | 10.495109510422 | 10.437922859192 |
従って、今回の検証では echo の方が 0.057 秒程度早い結果となりました。
なぜ差がついてしまうのか?
print と echo でそれぞれ機能に違いがあるためです。
int print ( string $arg )
print は、引数(ひきすう、処理を動かす為のパラメーターのようなもの)に指定された文字列を出力し、戻り値(他の処理で使うために関数や命令から戻される結果)として必ず「1」を返します。
(参考:http://php.net/manual/ja/function.print.php)
void echo ( string $arg1 [, string $... ] )
一方、echo は、引数に指定された文字列を出力することは同じですが、戻り値はありません。
(参考:http://php.net/manual/ja/function.echo.php)
従って、わずかではありますが、「引数を返す」という点においてのみ echo の方がわずかに早い結果になりやすいことがうかがえます。
つまりどちらを選べば良い?
新しくこれからプログラムを実装する場合や、純粋に速度を0.1秒でも早くしたいのであれば echo を選ぶことが必須となるでしょう。
ですが、今回の検証では100万回出力を行った差を取ってもわずか0.06秒程度とほとんど差がないため、プログラミングの基本からいえば、テーマやプラグインなどで使用している方に揃えるほうが、後からの可読性や保守性が担保でき、保守しやすいプログラムになるといえます。
Copyright © PLUGMIZE(プラグマイズ)
















