这是我一直想知道的事情.当使用本机PHP函数而不是PHP循环等效时,性能总是更好吗?为什么或者为什么不?
以下两个例子来说明这个问题:
假设我有一个包含1000个元素的大型数组.每个值只是一个整数用户ID.我想知道一个特定的用户标识是否在数组中,我碰巧知道它将朝向数组的末尾(因为它最近会被添加).我有两个选择:a)做一个foreach
遍历整个数组的常规PHP 循环,直到找到用户ID,或者b)array_reverse()
在数组上做一个并执行相同的foreach
循环,直到找到id(如果它存在,它将结束这个循环更快).哪个更快?
我的直觉告诉我,第一个选项是更快,因为它做一个循环,而第二个选项是慢,因为在幕后,array_reverse()
是还做某种类型的循环(C语言)的,因此需要两个循环的操作.
如果我有一个大的多维数组,其中每个值都是[messageid,message],那么使用foreach
循环来查找id的特定消息会比将messageid设置为元素的关键并且做的更慢isset(array[messageid]) && array[messageid]
吗?
编辑:只是为了澄清,我知道第一个例子可以使用array_search(),因为这是一个非常简单的例子.主要的问题不是哪一个更快(因为基准可以让我很容易地知道),但为什么,如同在幕后发生的事情一样?