「foreach」は、Lambda または「static」関数を使用した「array_map」とどのように比較しますか?
配列を変換するとき、開発者は、「foreach」を利用することによるパフォーマンスへの影響についてよく考えます。 '、ラムダ (クロージャ) 関数を使用した 'array_map'、または 'static' を使用した 'array_map' function/method.
パフォーマンス評価
ベンチマーク (xdebug を無効にした場合) により、次のことが明らかになります:
-
PHP 5.6: 'foreach 間の最小限の違い' と 'array_map'クロージャ.
-
PHP 7 以降: 'foreach' クロージャと 'array_map' クロージャは同等のままです。
'use' を使用したクロージャの影響
「use」ステートメントにクロージャーを含めると、「array_map」バージョンのパフォーマンスに大きな影響を与えますが、 「foreach」バージョンにはありません。
その他のアプローチ
「foreach」、ラムダを使用した「array_map」、および「static」関数を使用した「array_map」が最も一般的なアプローチですが、他のオプションも存在します:
-
ジェネレーター式: 'foreach' に似ていますが、簡潔です (PHP バージョンでサポートされている場合)。
-
'uopz_iterator_apply()': 高速ですが、PHP 8.0 では非推奨です。
アプローチの中から選択する
最適な選択は要因によって異なります内容:
-
簡素化: 'foreach' の方が読み取りと書き込みが簡単です。
-
パフォーマンス: ループやループのない単純な変換の場合クロージャ、'foreach' または 'array_map' と 'static' 関数は
-
クロージャのパフォーマンス: クロージャが必要な場合は、PHP 7.x で最高のパフォーマンスを得るために「uopz_iterator_apply()」を使用するか、「uopz_iterator_apply()」が使用できない場合は「foreach」を使用することを検討してください。
-
コード プロファイラー: を使用します。プロファイラーはパフォーマンスのボトルネックを特定し、最適な手法を選択します。
以上が`foreach`、Lambda を使用した `array_map`、または静的関数: 配列変換に最も速いのはどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。