【发布时间】:2015-09-10 13:18:27
【问题描述】:
函数的结果是否被 PHP 内部缓存?
简单示例:
public function calc($arg){
return pow($arg,0.5);
}
echo calc(5) . "<br>";
echo calc(5) . "<br>";
PHP 会计算 calc() 两次,还是会识别出参数没有改变并给我某种缓存结果?
【问题讨论】:
-
是的
PHP会计算两次。 -
不,PHP 不会像这样优化.....它会被执行两次......如果你的函数类似于:
public function calc($arg){ static $i = 0.5; return pow($arg,$i++); }或被访问,缓存函数结果会非常糟糕在方法调用之间可能已更改的类属性 -
这不是一个实现细节,留给编写解释器的人吧?
-
对于这种类型的需求,我们有 if else 条件仅在参数不同时调用函数
-
所以基本上,你问的是 php 是否开箱即用 - 根据其他开发人员的 cmets - 它没有开箱即用,所以你需要自己编写那部分,以备不时之需。
标签: php performance caching