4

私はPHPコードを最適化するために取り組んでおり、これらの方法でエコーを高速化できることがわかりました-正確には、次のものに置き換えることができますecho "The name of the user is $name" . ".";:

  • echo 'The name of the user is '.$name.'.';
  • echo "The name of the user is", $name, ".";
  • echo sprintf("The name of the user is %s", $name);

どれが一番速いですか?ベンチマークだけでなく、可能であれば技術的な説明もお願いします。

4

3 に答える 3

11

まず、これはマイクロ最適化であり、マイクロ最適化に何時間も費やすよりも、より高速なサーバーにお金を払ってより多くの製品を開発する方がよいでしょう。ただし、 http://micro-optimization.com/によると、結果は次のとおりです。

sprintf() は二重引用符よりも 138.68% 遅い (1.4 倍遅い)

sprintf() は単一引用符よりも 163.72% 遅い (1.6 倍遅い)

于 2013-06-09T17:41:48.100 に答える
3

上記のコメントは関連しています。コードを最適化するためのより良い方法があります。

つまり、文字列を最適化する最善の方法は、文字列をリストにポップしてから、リストを連結することです。良い出発点として、この投稿を見てください。

于 2013-06-09T17:42:09.127 に答える
3

sprintf()PHP での関数呼び出しは非常にコストがかかりsprintf()、フォーマット文字列を解析する必要があるため、バリエーションを使用するのが最も遅いことは間違いありません。のようなものを使用すると、echo "abc ", $n, " xyz";実際には 3 つの単一ZEND_ECHOオペコードにコンパイルされます。つまり、使用する SAPI によっては、出力レイヤーが複数回呼び出され、非常に遅くなる可能性があります。echo "abc $n xyz";使用しているかどうかにかかわらずecho "abc " . $n . " xyz";、どちらもコカテネーション操作にコンパイルされるため、大きな違いはありません。

于 2013-06-09T17:50:57.177 に答える