ホームページ  >  記事  >  バックエンド開発  >  PHP foreach のパフォーマンス比較_PHP チュートリアル

PHP foreach のパフォーマンス比較_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:43:26915ブラウズ

foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します (foreach は開始時に最初に配列をコピーするため、一般的に) while の方が高速であると考えられています。実行中、および while ) ですが、結果はまったく逆になります。
配列の「読み取り」操作はループ内で実行されるため、foreach は while よりも高速です:

コードをコピーします コードは次のとおりです:

foreach ($array as $value) {
echo $ value;
}
while (list($key) = each($array)) {
echo $array[$key];
}

配列の「書き込み」操作はループ内で実行されるため、while の方が高速ですforeach より:
コードをコピーします コードは次のとおりです:

foreach ($array as $key => $value) {
echo $array[$key] = $value '.. .';
}
while (list( $key) = each($array)) {
$array[$key] = $array[$key] '...';

概要:一般に、foreach には値のコピーが含まれると考えられており、間違いなく while よりも遅くなりますが、実際にはループ内で配列を読み取るだけであれば、foreach は非常に高速です。これは、PHP で使用されるコピー メカニズムが「」であるためです。参照カウント、書き込み時コピー」、つまり、PHP で変数がコピーされても、基本的に初期形式は参照の形式のままです。変数の内容が変更された場合にのみ、実際のコピーが発生します。これを行う理由は、メモリの消費を節約することと、
コピーの効率を向上させるためです。この観点から見ると、foreach の効率的な読み取り操作を理解するのは難しくありません。さらに、foreach は配列書き込み操作の処理には適していないため、ほとんどの場合、foreach ($array as $key => $value) の形式で配列書き込み操作を実行するコードは次のように置き換えるべきであると結論付けることができます。 while (list($key) =
each($array))。これらの手法によって生じる速度の違いは、小規模なプロジェクトでは明らかではないかもしれませんが、フレームワークのような大規模なプロジェクトでは、1 つのリクエストに数百、数千、または数千万の配列ループ操作が含まれることが多く、その差は大幅に拡大します。



http://www.bkjia.com/PHPjc/320784.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/320784.html技術記事 foreach は配列のコピー (配列をコピーすることによって) を操作しますが、while は配列の内部インデックスを移動することによって操作します (fore...)。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。