Php 为什么闭包的内存使用更大
我意识到,闭包会消耗更多的内存。有人能帮我理解为什么会这样吗?此外,如果有以下结果,是否不建议使用闭包Php 为什么闭包的内存使用更大,php,Php,我意识到,闭包会消耗更多的内存。有人能帮我理解为什么会这样吗?此外,如果有以下结果,是否不建议使用闭包 $value=10; $memory=memory\u get\u usage(); $fun=静态函数($add,$value){ $value+=$add; echo美元价值; }; $fun(10$value); 回音“|”$价值"内存:'。(memory_get_usage()-$memory); 输出: 20 | 10 |内存:368 $value=10; $memory=memo
$value=10;
$memory=memory\u get\u usage();
$fun=静态函数($add,$value){
$value+=$add;
echo美元价值;
};
$fun(10$value);
回音“|”$价值"内存:'。(memory_get_usage()-$memory);
输出:
20 | 10 |内存:368
$value=10;
$memory=memory\u get\u usage();
$closure=静态函数(int$add)使用($value){
$value+=$add;
echo美元价值;
};
元(10);;
回音“|”$价值"内存:'。(memory_get_usage()-$memory);
输出:
20 | 10 |内存:752
(对象也是如此)来自:
$value
。在第一个示例中,您将指针传递给$add
和$value
。因此,脚本在第二个函数中消耗了更多内存
不建议使用闭包吗
我想这是一个基于观点和任务的问题。大多数开发人员更喜欢干净的代码,而不是几个字节。但有些项目的负载非常高,因此管理者要求保存每个字节
在我的项目中,我试图维护最简洁、可读和可维护的代码。因此,我更喜欢lambdas
,而不是closures
。不是因为优化,而是为了使我的函数独立于范围外的变量
并使用其他手段优化项目:缓存、数据库、体系结构。因为试图节省这些微不足道的字节,你可能会挫败整个项目。你最好问问PHP开发人员。。。可能与第二个参数的注入方式有关。顺便说一句:两个例子都是闭包…@LarsStegelitz,第一个不是匿名函数,第二个不是闭包吗?如果不是,那么我不完全理解什么是闭包:/。闭包是一个匿名函数。。。这只是另一个术语@拉尔斯泰格里茨嗯。。。所以我很困惑。阅读了其他文章,描述了不同的事情:,引用了一个例子:“不是所有的闭包都是lambda,也不是所有的lambda都是闭包。”术语“闭包”和“匿名函数”通常用于同一件事。严格地说,它们是不一样的。闭包是函数及其环境的组合。在这种情况下,“use”关键字在该环境中定义了一个变量,而该变量在外部是不可见的。OTOH,你可以说第一个例子也是一个闭包,只是有一个空的环境。这无法解释为什么内存使用量增加了一倍,指针副本不需要大约400字节。