2

非常に大きな配列を作成し、それらを検索するアプリケーションを作成しています。そのタスクを実行するための優れた PHP 配列検索アルゴリズムがあるかどうかを知りたいだけですか?

例: 200 万を超えるキーと値を含む配列があります。検索する最良の方法は何ですか?

EDIT 配列に基づくフラットファイルdbmsを作成したので、それを検索する最良の方法を見つけたい

4

2 に答える 2

5

いくつかのこと:

  1. 試してみて、いくつかのアプローチをベンチマークして、どれがより速いかを確認してください
  2. オブジェクトの使用を検討する
  3. 少なくともDBについて考えてみてください...それは、Redis.ioのようなNoSQLキー->値ストレージのものである可能性があります(これは非常に高速です)
  4. 検索アルゴリズム、確かにたくさんあります

しかし、メモリに 2M キーの連想配列を格納すると、大量のハッシュ衝突が発生することになり、いずれにせよ速度が低下します。配列をソートし、チャンクし、まともな検索アルゴリズムを適用すると、かなり高速に動作するようになるかもしれませんが、率直に言って、悪い決定を下そうとしていると思います.

これも考慮してください。PHP は設計上ステートレスです。スクリプトを実行するたびに、データをメモリに再度ロードする必要があります (作成している Web アプリケーションの場合は、要求ごとに)。これが、HashTable でのブルート フォース検索よりも大きなボトルネックになることまずありません。
これを見つける最も簡単な方法は、APC (または代替手段) をオフにしてテストを実行することですが、最初に検索するアレイをキャッシュします。2 つの違いを測定すると、アレイの実際の構築にどれだけのコストがかかっているかがわかります。

于 2013-10-27T21:49:25.480 に答える