Pac*_*ier 5 php closures anonymous-function php-internals hhvm
我有一个数组存储对单个匿名函数的多个引用:
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
Run Code Online (Sandbox Code Playgroud)
可以看出,我们只创建了一个匿名函数.
如果我们把函数声明放在循环中怎么办?:
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
Run Code Online (Sandbox Code Playgroud)
引擎是否足够智能以识别只需要创建一个对象?
上面的代码是仅创建一个对象还是每次迭代创建一个对象?
(问题针对HHVM和Zend Engine.)
如果在循环内创建函数,则创建300个单独的匿名函数对象.PHP并没有优化它,因为也许这就是你想要的.这是很多比循环之前曾经创建功能效率较低.
以下是创建两个独立对象的证据:http://3v4l.org/f3cdE
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |