循环通过一个大阵列

时间:2013-10-27 21:29:20

标签: php arrays loops search

我正在创建将创建一个非常大的数组的应用程序,并将搜索它们。 我只是想知道是否有一个很好的PHP数组搜索算法来完成这项任务?

示例:我有一个包含超过2M键和值的数组,搜索的最佳方式是什么?

修改 我创建了一个基于数组的flatfile dbms,所以我想找到最好的搜索方式

2 个答案:

答案 0 :(得分:5)

有几件事:

  1. 尝试一下,对几种方法进行基准测试,看看哪一种方法更快
  2. 考虑使用对象
  3. 至少考虑一下DB ......它可能是一个NoSQL key->值存储的东西,比如Redis.io(死机速度快)
  4. 搜索算法,确定there are plenty of them around
  5. 但是将2M密钥的关联数组存储在内存中意味着你将有大量的哈希冲突,这无论如何都会让你失望。对数组进行排序,对其进行排序,并应用一个不错的搜索算法,你可能让它合理地快速运行,但是说实话,我会说你将做出错误的决定。< / p>

    还要考虑这一点:PHP在设计上是无状态的,每次脚本运行时,数据都必须再次加载到内存中(对于每个请求,如果它是您正在编写的Web应用程序)。 不会是一个更大的瓶颈,而不是HashTable上的蛮力搜索。
    找到这个的最快方法是运行测试,一旦关闭APC(或备选方案),然后再次,但缓存您想要首先搜索的阵列。测量两者之间的差异,你就会知道阵列的实际构造花了多少钱

答案 1 :(得分:2)

最好的方法是使用array_search()。 PHP已经大大优化了它们的in C written函数。

如果这仍然太慢,你应该切换到另一种“编程”语言(PHP因其速度而不受欢迎)。

有些算法available可以使用您的图形卡并行搜索特定值。