in_array と isset のどちらが効率的ですか?
大きな配列を扱う場合、効率を高めるためにコードを最適化することが重要です。一般的な 2 つのアプローチは、in_array 関数を使用することと、isset を使用してキーの存在を確認することです。
in_array
in_array 関数は値を配列と比較し、存在する場合は true を返します。 。その時間計算量は O(n) です。ここで、n は配列内の要素の数です。これは、配列サイズが増加するにつれて、検索時間が直線的に増加することを意味します。
isset
isset 関数は、値に関係なく、キーが配列内に存在するかどうかをチェックします。 。ハッシュ テーブルを使用してキーと値を保存するため、キーの検索にかかる時間は O(1) になります。
提供されたコード例では、次の理由から isset が推奨されます。
ベンチマーク結果
この効率の違いを説明するために、10,000 個の要素を持つ配列を考えてみましょう:
isset: 0.009623 in_array: 1.738441
配列のサイズが大きくなるにつれて、2 つのアプローチ間のパフォーマンスの差はさらに大きくなります。
追加の考慮事項
内部で衝突が発生した場合特に $a[$new_val] 構文を使用する場合は、$a[md5($new_val)] のような衝突耐性のあるアプローチを採用できます。この手法により、さらに複雑なレイヤーが導入されますが、衝突が起こりやすいキー生成を悪用する潜在的な DoS 攻撃を軽減できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3