「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 大規模な配列の場合、isset は in_array よりも効率的ですか?

大規模な配列の場合、isset は in_array よりも効率的ですか?

2024 年 11 月 11 日に公開
ブラウズ:548

Is isset More Efficient Than in_array for Large Arrays?

in_array と isset のどちらが効率的ですか?

大きな配列を扱う場合、効率を高めるためにコードを最適化することが重要です。一般的な 2 つのアプローチは、in_array 関数を使用することと、isset を使用してキーの存在を確認することです。

in_array

in_array 関数は値を配列と比較し、存在する場合は true を返します。 。その時間計算量は O(n) です。ここで、n は配列内の要素の数です。これは、配列サイズが増加するにつれて、検索時間が直線的に増加することを意味します。

isset

isset 関数は、値に関係なく、キーが配列内に存在するかどうかをチェックします。 。ハッシュ テーブルを使用してキーと値を保存するため、キーの検索にかかる時間は O(1) になります。

提供されたコード例では、次の理由から isset が推奨されます。

  • in_array の O(n) と比較して高速な O(1) 検索を利用します。
  • in_array のような外部関数を呼び出すよりもオーバーヘッドが少なくなります。

ベンチマーク結果

この効率の違いを説明するために、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