PHP における参照渡しとパフォーマンス: 誤解が解けた
PHP では、関数パラメータの参照渡しが議論の対象となっています、パフォーマンスに影響を与える可能性があると推測する人もいます。参照を使用すると、関数がスコープ外の変数を変更できるようになりますが、必ずしも速度が向上するとは限りません。
コピー オン ライト メカニズム
PHP は「コピー オン ライト」を採用しています。オブジェクトと配列のコピーを最小限に抑えるメカニズム。これらのオブジェクトは変更された場合にのみコピーされます。したがって、変更を加えずにパラメーターを使用するだけの関数の場合、その動作は参照渡しに似ています。
パフォーマンス分析
誤解を明確にするために、パフォーマンス テストは次のとおりです。 20 KB の文字列パラメータを読み取るか変更する関数を使用して実行されます。結果は驚くべきものでした:
関数の読み取り/使用パラメータ:
関数の書き込み/変更パラメータ:
推論
テストにより、値による受け渡しが一貫して pass より高速であることが明らかになりました。 -by-reference はパラメータの読み取りと変更の両方に使用されます。これは、PHP の Copy On Write メカニズムがバイパスされていない、または参照渡し用に最適化されていないことを示唆しています。
結論
一般的な考えに反して、 pass-by- を使用すると、 PHP で参照してもパフォーマンスは向上しません。パラメーター値を変更しない関数の場合、コピーは無視できます。ただし、パラメーターの変更が必要な場合、参照渡しと値渡しのパフォーマンス特性はほぼ同じになります。したがって、本来の目的どおり、関数のスコープ外で変数を変更する場合にのみ参照渡しを使用することが重要です。
以上が参照渡しは実際に PHP のパフォーマンスを向上させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。