这是我一直想知道的事情。当使用本机PHP函数而不是PHP循环等效时,性能总是更好吗?为什么或为什么不呢?
以下两个例子来说明问题:
foreach
循环,遍历整个数组,直到找到用户ID,或b)在数组上执行array_reverse()
并执行相同的foreach
}循环直到找到id(如果它存在,它将更快地结束这个循环)。哪个更快?我的直觉告诉我第一个选项更快,因为它执行一个循环,第二个选项更慢,因为在幕后,array_reverse()
也做某种循环(在C),因此需要两个循环来进行操作。
foreach
循环来查找id的特定消息会比将消息类设置为元素的关键点并执行isset(array[messageid]) && array[messageid]
?编辑:为了澄清,我知道第一个例子可以使用array_search(),因为这是一个非常简单的例子。主要问题是哪一个更快(因为基准可以让我轻易知道),但是为什么,就像在幕后发生什么一样?
答案 0 :(得分:1)
你可以在这里看到函数消耗的PHP基准,在我看来它们并没有太大的不同。为什么?更多的代码或更少的代码,更少的代码或更多的基本比较函数比实际函数占用更少的浮点运算,然后这些函数再次在基本比较方法(如array_reverse()中运行,这些方法不是非常耗时且需要处理。
编辑:我同意FuzzyTree,因为你应该专注于算法的效率而不是功能本身。
答案 1 :(得分:-2)
array_xxx()函数由循环组成,它们是最优化的。我不认为你可以通过你的“手工制作”foreach / for / while循环自己做得更好。所以我更喜欢使用预先声明的函数 (顺便说一句,在最原始的编程语言形式中,只有一种循环,但我们能够将它调制成三种形式:))