我正在创建将创建一个非常大的数组的应用程序,并将搜索它们。 我只是想知道是否有一个很好的PHP数组搜索算法来完成这项任务?
示例:我有一个包含超过2M键和值的数组,搜索的最佳方式是什么?
修改 我创建了一个基于数组的flatfile dbms,所以我想找到最好的搜索方式
答案 0 :(得分:5)
有几件事:
但是将2M密钥的关联数组存储在内存中意味着你将有大量的哈希冲突,这无论如何都会让你失望。对数组进行排序,对其进行排序,并应用一个不错的搜索算法,你可能让它合理地快速运行,但是说实话,我会说你将做出错误的决定。< / p>
还要考虑这一点:PHP在设计上是无状态的,每次脚本运行时,数据都必须再次加载到内存中(对于每个请求,如果它是您正在编写的Web应用程序)。 不会是一个更大的瓶颈,而不是HashTable上的蛮力搜索。
找到这个的最快方法是运行测试,一旦关闭APC(或备选方案),然后再次,但缓存您想要首先搜索的阵列。测量两者之间的差异,你就会知道阵列的实际构造花了多少钱
答案 1 :(得分:2)
最好的方法是使用array_search()
。 PHP已经大大优化了它们的in C written函数。
如果这仍然太慢,你应该切换到另一种“编程”语言(PHP因其速度而不受欢迎)。
有些算法available可以使用您的图形卡并行搜索特定值。