gpt4 book ai didi

php - array_map vs 循环和操作

转载 作者:IT王子 更新时间:2023-10-29 01:02:50 26 4
gpt4 key购买 nike

使用:

for($i=1; $i<= 10000; ++$i) {
$arrayOfNumbers[] = rand(1, 99999);
}

有人可以解释为什么会有这样的速度差异吗:

array_map(array($maxHeap, 'insert'), $arrayOfNumbers);
# Avg Time: 0.92856907844543s

# against

foreach($arrayOfNumbers as $number) {
$maxHeap->insert($number);
}
# Avg Time: 1.3148670101166

$maxHeap 是一个对象 class MaxHeap extends SplMaxHeap

最佳答案

据我所知,与 Sajith Amma 的回答相反,php 不会异步执行任何操作。

我怀疑这实际上是由于 $maxHeap->insert 的查找不同造成的。

通过 foreach 循环,您在当前范围内调用 $maxHeap->insert,php 解释器必须查找 maxHeap然后在 maxHeap 实例上查找 insert。在您正在运行的脚本范围内,可能存在其他变量,这些变量会使查找速度变慢。

使用 array_map php 解释器知道它将调用完全相同的 $maxHeap->insert,它可以只进行一次查找并使用相同的“代码”地址'用于其余的迭代。

关于php - array_map vs 循环和操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com