3

スクリプトのメモリ使用量を減らすべきではありませんか?

function a(&$var);より多くのメモリを使用しますfunction a($var);

foreach($array as $k => &$v)より多くのメモリを使用しますforeach($array as $k => $v)

たとえば、24MB$varを使用します。参照で渡すと27MBを使用します

4

1 に答える 1

2

(残念ながら)zendエンジン内の内部の魔法を詳細に説明することはできませんが、私はドキュメントを参照しています:

PHPでの参照は、同じ変数コンテンツに異なる名前でアクセスするための手段です。それらはCポインタのようなものではありません。たとえば、それらを使用してポインタ演算を実行することはできません。これらは実際のメモリアドレスではありません。詳細については、「参照がないもの」を参照してください。代わりに、それらはシンボルテーブルエイリアスです。PHPでは、変数名と変数コンテンツが異なるため、同じコンテンツに異なる名前を付けることができることに注意してください。最も近い例えは、Unixのファイル名とファイルです。変数名はディレクトリエントリですが、変数の内容はファイル自体です。参照は、Unixファイルシステムでのハードリンクに例えることができます。

UNIXファイルシステムとの比較はわかりやすいと思います。ファイルに複数の名前がある場合は、それらの名前を保存するために追加のメモリが必要になります。

于 2013-03-27T02:22:23.260 に答える