看来anon函数是对象,所以我猜这个函数是该对象的一个方法。这是否意味着他们比正常的功能需要更多的资源?
答案 0 :(得分:3)
在什么方面占用更多资源?记忆?还是硬盘空间?
内存,不,php加载了所有内容,只要你包含一个文件,就会读取整个文件。因此,如果函数充当方法中的变量,那么它将自动执行,这可能会占用更多的内存空间。虽然定义为函数的函数在被调用之前不会被执行。因此,如果您有一个函数充当未使用的变量(声明且从未使用过)。然后是的,它会占用更多的内存。
硬盘空间:占用的金额相同。
答案 1 :(得分:0)
我对相对运行时间进行了一次小测试。该脚本如下:
<?php
// long execution time required
ignore_user_abort(1);
set_time_limit(0);
// some presumingly costly function
function mathematics() {
$c = 0;
for ($i = 0; $i < 1000; $i++) $c += rand(0, 1000);
return $c / 1000;
}
$lambda = function() {
// same as mathematics()
};
// Executing normal function
for ($i = 0; $i < 50000; $i++) mathematics();
// Now onto lambda function
for ($i = 0; $i < 50000; $i++) $lambda();
?>
使用xdebug
进行概要分析并将缓存提供给cachegrind
会产生:
mathematics(): 31,804,288
closure: 31,719,438
我认为可以安全地假设跑步所需的时间差异是可以忽略不计的。