gpt4 book ai didi

php - PHP引擎是否优化循环内的匿名函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:35:45 24 4
gpt4 key购买 nike

我有一个数组,它存储对单个 anonymous function 的多个引用:

$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}

可以看出,我们只创建了一个匿名函数。

如果我们将函数声明放在循环内会怎么样? :

$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}

引擎是否足够智能,可以识别出只需要创建一个对象?

上面的代码是只创建一个对象还是每次迭代创建一个对象?

(问题同时针对 HHVM 和 Zend Engine。)

最佳答案

如果您在循环内创建函数,您将创建 300 个独立的匿名函数对象。 PHP 不会对此进行优化,因为也许这就是您想要的。这比在循环之前创建一次函数效率要低 很多

这是创建了两个独立对象的证明:http://3v4l.org/f3cdE

关于php - PHP引擎是否优化循环内的匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051368/

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