ブログ

PHP の print と echo の違いとは

pg

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.";

 

実行結果は以下のようになりました。(単位:秒)

print 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秒程度とほとんど差がないため、プログラミングの基本からいえば、テーマやプラグインなどで使用している方に揃えるほうが、後からの可読性や保守性が担保でき、保守しやすいプログラムになるといえます。

関連記事

WP-Ranking PRO
ページ上部へ戻る