2

これはマイクロ最適化についての質問ではありません。文字列リテラルに一重引用符を使用する方が、二重引用符を使用するよりも高速であるかどうかだけに興味があります(変数の展開が発生しないため)。

例:

echo 'This is a string' # should a faster
echo "This is a string"

私はこれを(大きなループと時間を使用して)測定しようとしましたが、本当の結論を出すことができませんでした。

これについて何かアイデアはありますか?

編集

また、パフォーマンスの違いが非常に小さい理由にも興味があります...変数の展開には、文字列の何らかの解析が必要であり、これによって顕著な違いが生じるはずです。

4

3 に答える 3

2

理論的にはそうです($varなどの展開を検索しないため)。

実際には、違いが見られることはないのではないかと疑ってください。

于 2012-08-02T07:33:01.677 に答える
1

私はそれが(ほんの少し)速いはずだと信じています。ちょっとした実験をしてみましょう - 10 000 の $ 記号で文字列をエコーし​​ます。最初のケース (二重引用符) ではエスケープする必要がありますが、2 番目のケースではエスケープする必要はありません。最初の文字列は 2 倍長いため、処理が遅くなります。これは極端な例であり、実際の生活のどこかで違いを観察できるとは思えません。

編集:あなたの編集に応じて。double qoute の場合の解析は、決定されたオートマトンを使用して行われるため、やはり線形であると思います。これは単なる憶測です。それでも、変数の解析がどのように行われるかは想像できます。エスケープされていない $ 記号が表示された場合は、変数を追跡する必要があります。

于 2012-08-02T07:35:37.743 に答える