1

重複の可能性:
PHP で単一引用符と二重引用符のパフォーマンス上の利点はありますか?

変数を含まない"文字列を定義するときに sを使用すると、追加の解析が実行されない場合と比較して、PHP コードのパフォーマンスが低下するかどうか疑問に思っています。'

たとえば、PHP は、 で定義されているが で定義されて"いない文字列内の変数を解析しようとします'

$myString = "Greetings earthlings!";
echo '$myString'; //literally outputs the string '$myString'
echo "$myString"; //literally outputs the string "Greetings earthlings"

私の質問は、これまでずっと次のようなコードを書いてきたということです。

echo "Greetings earthlings";

サイクルを無駄にしていませんか?または、PHP は、私が本当に意図したことを知るのに十分スマート/最適化されています:

echo 'Greetings earthlings';

?

4

2 に答える 2

5

VLDを少し操作すると、両方のプログラムが (PHP 5.3 を使用して) 同一のバイトコードにコンパイルされることがわかります。

line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   ECHO                                                     'Hello+world'
   3     1    > RETURN                                                   1

結論: 最新バージョンの PHP にはまったく違いはありません。何もありません。自分が一番いいと思うものを使ってください。


ただし、次の点に違いがありecho "Hello $world"ます。

compiled vars:  !0 = $world
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  >   ADD_STRING                                       ~0      'Hello+'
         1      ADD_VAR                                          ~0      ~0, !0
         2      ECHO                                                     ~0
         3    > RETURN                                                   null

そしてecho "Hello " . $world

compiled vars:  !0 = $world
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  >   CONCAT                                           ~0      'Hello+', !0
         1      ECHO                                                     ~0
         2    > RETURN                                                   null

しかし、私はそれを重要と呼ぶことを躊躇します. 実際のパフォーマンスの違いは、おそらく取るに足らないものです。

于 2012-05-16T04:28:45.363 に答える
1

ベンチマークを実行して確認することができます。PHP 4 で行ったところ、文字列の連結が埋め込み変数よりもはるかに高速であることがわかりました (1 桁? 正確には覚えていません)。比較すると、二重引用符で囲まれたプレーンな文字列は、単一引用符よりもわずかに高速でした。

しかし、それは PHP 4用でした。後で PHP 5に対して同じテストを実行しましたが、パフォーマンスの違いはほとんどありません。

于 2012-05-16T04:20:01.377 に答える