どちらの方が性能が良い:($longstring . $longstring) . $longstring
、または$longstring . ($longstring . $longstring)
? PHPの連結演算子は左または右結合型ですか?その結合性が最適か、かっこで結合性を上書きすべきですか?PHPのパフォーマンス:付加文字列と付加文字列の比較
答えて
$x . $y . $z
しかしながら、いずれの方法を介して獲得すべき性能がない($x . $y) . $z
と同じです。それは次のようだ:
// $x . ($y . $ z)
$tmp = $y . $z;
return $x . $tmp;
対
// ($x . $y) . $ z
$tmp = $x . $y;
return $tmp . $z;
どちらの場合も、連結での同じ量が発生しています。 1つの方法がより高速であった場合(ただしどちらもそうでない場合)は、$x
,$y
および$z
の長さに依存します。 (つまり、長い文字列に短い文字列を追加する方が速いか、短い文字列に長い文字列を追加するのが本当に問題なのですか?テストなしでは、その差は重要ではないと思います)。
今、これらは異なっています:$x .= $y
と$x = $y . $x
。 1つは、ASSIGN_CONCAT
追加操作です。これは、プレインティング(CONCAT
、ASSIGN
)よりもかなり高速です。 $x = $x . $y
は、機能的には$x .= $y
と等価であるが、2つの操作であることに留意されたい。したがって、追加するスタイルには、同じパフォーマンス差(存在する場合)がプリペンドとして設定されます。
本当に重要ではありません。違いは最高でも数ミリ秒です。
あなたのコーディングスタイルと今後のメンテナンス性に最適なスタイルでお書きください。
私が思う '$ longstring'のサイズに依存するかどうかは重要ですか? – ppalka
@ppalka大規模なメガバイトではないと私はほとんど思っていません –
Pekkaが言ったように、それは本当に重要ではないし、私はそこに深刻な基準があるとは思わない。あなたはそれを試して、本当に知りたいのかを測るべきです。
連想性については、最も一般的な連結関数が左から右にあると思います。
2は、二つの間には差はなりません。両方とも最初に($ longstring。$ longstring)に2n文字列を追加し、次にその全体に3n文字列を割り当てます。彼らは何か意味を伝えていると思われるので、父親は私を混乱させますが、このケースではもっと早いと思うので、単にそこにいるだけです。どちらのグループにも特別なものがない場合は、$s1 . $s2 . $s3
が望ましいです。
パフォーマンス上の理由から、このような細かい詳細はマイクロマニュファクチャリングでは時間の無駄です。 Pekkaが言ったように、それはスピードの信じられないほど小さな違いを与える。パフォーマンスを大幅に向上させる可能性のあるものを探して同じ時間を費やすことができます。
編集:文字列が本当に長く、本当に多く、実際のリクエストを遅くしている場合は、単一の文字列を作成せずに文字列を渡すことを検討する必要があります。それらの配列を保持し、それらを出力するか、または連結せずに格納します。
- 1. 日付を文字列の文字列として比較
- 2. データベースクエリと文字列比較のパフォーマンス
- 3. Linq比較文字列の日付
- 4. PHPの文字列比較
- 5. PHPの文字列比較
- 6. PHPの日付と文字列を比較する方法
- 7. 文字列とPHPの文字列を比較しますか?
- 8. 入力文字列(PHP/SQL)とUTF-8文字列の比較
- 9. jQueryの文字列操作のパフォーマンスとPHPの比較
- 10. PHP - 文字列とstrposの比較
- 11. 文字列比較
- 12. 比較文字列
- 13. データ型文字列とC#の文字列との比較
- 14. strpos strcmpのPHP文字列比較
- 15. 日付文字列を比較する方法とiPhoneの日付文字列をグループ化する方法は?
- 16. 文字列の比較と文は
- 17. C++は文字列の日付と比較する
- 18. Pythonの日付比較と文字列出力/形式
- 19. 文字列とオプションとの比較オプション文字列
- 20. Java配列と文字列の比較
- 21. オブジェクトメンバ配列と文字列の比較
- 22. PHP - 文字列を特殊文字と比較する
- 23. 日付文字列とScalaの実際の日付との比較
- 24. 配列の文字と文字列の比較
- 25. Androidエスプレッソ画面上の文字列と文字列の比較
- 26. 文字列の比較 - Java
- 27. Pythonの文字列比較
- 28. 文字列/パスの比較
- 29. DateTime、文字列の比較
- 30. Python文字列の比較
このような違いが生じるシナリオは非常に狭く特別なので、一般にインターネットを含む世界中のオーディエンスにはあてはまらない可能性があるため、ローカライズされています。あなたのプロジェクトでこれが問題になる場合は、PHPを使用しないでください。 – Gordon
@Gordon私はマイクロ最適化したいからではなく、PHPが文字列連結をどのように扱うかを知りたいので、この質問をしました。私は「違いを生み出そうとしている」ではない、私は悟りを得ようとしている。 – ppalka
実際にはパフォーマンス上の問題は99 +%には無視できるため、質問からパフォーマンスを尋ねる部分を削除したい場合があります。 – Gordon