ですから、私たちは傍観することはせず、この謎を完全に解決しようとします!
echoとprintの動作上の違いは、後者は関数のように動作できることです(常に1つを返します)。 その結果、printは、たとえば三項演算子のコンテキストで使用できます。これは時には非常に魅力的です。 Echoは関数として使用できませんが、複数の引数をカンマで区切って使用できますが、角括弧で囲むことはできません。 一方、printには引数が1つだけあり、括弧で囲むことも、括弧で囲まないこともできます。
ただし、これらの違いに関する情報は同じマニュアルで入手できますが、私たちの目標はパフォーマンスを比較することです。
テストのために、1000行(それぞれ32文字)を1000行表示するスタンドを作成しました。 これは、5つの方法のいずれかを使用します。
print "$value<br />";
-
echo "$value<br />";
-
print $value . '<br />';
-
echo $value . '<br />';
-
echo $value, '<br />';
各方法について、テストを20回実行し、そのたびに時間を追跡しました。 すべてのメソッドの結果の分布は正常であることが判明したため、平均値を速度の指標として使用できます。
次の値が取得されました。
- 1.727秒
- 1.727秒
- 1,462秒
- 1,428秒
- 1,321秒
実際、 printはechoよりも少し遅くなることがあります (または最初の2つの方法の結果が示すことがわからない場合があります)。 同時に、連結(および二重引用符の代わりに単一引用符)の代わりにいくつかのパラメーターでエコーを使用すると、非常に明確なパフォーマンスの向上が得られます。
しかし、待って、それは本当に具体的ですか? 数えましょう。 最小時間と最大時間の差は、 100万回の操作あたり406ミリ秒です。 つまり、今では流行しているように、 操作あたり406ナノ秒です。
これは私たちに大規模に何を与えますか?-たとえば、VKontakte? LiveInternetによると、毎日5億ページが閲覧されています。
ページごとにechoまたはprintが何回呼び出されますか? 成功している現代のサイトは、テンプレート、MVC、その他の恐ろしい言葉を使用したプレゼンテーションからのロジックの抽象化に必然的に頼っています。 その結果、出力操作はページごとに1回、または多くてもページのセマンティックブロックごとに1回呼び出されます。 最悪のオプションを想定し、そのようなブロックの数を10個で見積もります。 1ページ。
サーバー時間の節約はせいぜい1日あたり最大200秒 、つまり0.23%になると計算するのは簡単です。 それはたくさんですか、それとも少しですか? 自分で決めてください。 最初に、単一のSQLクエリを最適化するか、単一のファイルをキャッシュすると、パフォーマンスが数倍向上するかどうかを考えます。
そして、私はこの問題を解決するのにどれくらい時間がかかったかを言います:
- マニュアルの情報の表示-2分。
- ベンチマーク-31分。
一連の試行実験-5分。
テスト機器および技術の修正-20分。
テスト-9分。
処理結果-5分。