sat*_*hia 11 php arrays performance
可能重复:
确定PHP中是否存在数组键有哪些更快更好?
假设我想存储我在memcache上的朋友列表.有时我需要搜索用户是否在我的列表中,有时我需要获取所有朋友列表.
你会宁愿
$friends[] = $friend
Run Code Online (Sandbox Code Playgroud)
要么
$friends[$friend] = 1;
Run Code Online (Sandbox Code Playgroud)
理由是在没有惩罚速度的情况下尽可能地保存公羊.我没有找到任何关于php 5.3.8的案例研究可以帮助我解决我的小困境:在负载下,执行速度更快?
array_key_exists还是in_array?(即:foo是酒吧的朋友?)
此外,有时我需要获取整个朋友列表,所以我需要迭代整个列表,以建立一个朋友阵列.根本不确定第二种方法,因为我还不知道是否会有更多的array_search | array_key_exists | in_array或fetch of full friends list.
任何的想法?
Pat*_*her 28
array_key_exists要快得多.array_search必须遍历整个数组,所以它是O(n).array_key_exists是哈希表查找,因此它是O(1).
如果您不熟悉此概念,请参阅http://en.wikipedia.org/wiki/Big_O_notation.
在array_key_exists和之间isset,虽然两者都非常快[O(1)],但isset速度要快得多.如果此检查发生了数千次,您需要使用isset.
应该注意的是,它们并不相同 - 当数组键存在但值为null,isset将返回false并array_key_exists返回true.如果值可能是null,则需要使用array_key_exists.
| 归档时间: |
|
| 查看次数: |
11863 次 |
| 最近记录: |