2つの文字列を結合するとき、以下の方法はどちらが速いですか? そして、なぜそれはより速く走ることができるのでしょうか?
PHP コード:
$str1 = 'Hello';
$str2 = 'World';
方法 1:
$txt = $str1.$str2;
方法 2:
$txt = "$str1$str2";
2つの文字列を結合するとき、以下の方法はどちらが速いですか? そして、なぜそれはより速く走ることができるのでしょうか?
PHP コード:
$str1 = 'Hello';
$str2 = 'World';
方法 1:
$txt = $str1.$str2;
方法 2:
$txt = "$str1$str2";
オペコード比較
コード:
$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 回の実行):
結論
連結は高速ですが、特定のアプリケーションのパフォーマンスに影響を与える可能性はほとんどありません。