【问题标题】:Do function results in PHP get cached?PHP中的函数结果是否被缓存?
【发布时间】: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


【解决方案1】:

如果您安装了opcache,那么 PHP 将缓存 操作码,或操作码。这些是 PHP 运行的机器级指令。换句话说,PHP 正在缓存如何运行您的函数,而不是使用给定数据集运行它的结果或输出。

如果要保存运行的值,则应将结果存储在变量中并引用它,而不是一遍又一遍地调用函数

$data = calc(5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多