3

2つの文字列を結合するとき、以下の方法はどちらが速いですか? そして、なぜそれはより速く走ることができるのでしょうか?

PHP コード:

$str1 = 'Hello';
$str2 = 'World';

方法 1:

$txt = $str1.$str2;

方法 2:

$txt = "$str1$str2";
4

1 に答える 1

5

オペコード比較

コード:

$a=1; 
$b=2; 
echo "$a$b";

オペコード:

   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      ADD_VAR                                          ~2      !0
         3      ADD_VAR                                          ~2      ~2, !1
         4      ECHO                                                     ~2
         5    > RETURN                                                   null

コード:

$a=1; 
$b=2; 
echo $a.$b;

オペコード:

   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      CONCAT                                           ~2      !0, !1
         3      ECHO                                                     ~2
         4    > RETURN                                                   null

中間結論

連結によりオペコードが 1 つ少なくなります。そうではありませんが、実際の実行時のパフォーマンスをまだテストする必要があります。

任意のコードによって生成されたオペコードを確認するには、優れたvld拡張機能をご覧ください。

実行時のパフォーマンス

ワークステーションで 0.5m 以上の反復を実行 (平均 10 回の実行):

  • インライン: 0.9793 秒
  • 連結: 0.9252 秒

結論

連結は高速ですが、特定のアプリケーションのパフォーマンスに影響を与える可能性はほとんどありません。

于 2012-11-25T17:26:11.117 に答える