缓存的威力

啥都不说直接上代码,一个简单的求菲波那切数列
class Abc {

    //缓存数组
    public  static  $pool;

    //入口
    public function index(){

        $area = 300;

        self::$pool = array_fill(0,$area,0);

        $start = $this->getMillisecond();
        for ($i = 0;$i < $area;$i++){
            echo  $this->num($i) , PHP_EOL ;
        }

        $end = $this->getMillisecond();

        echo '时间总消耗:' , $end - $start;
    }


    /**
     * @param $n
     * @return int|mixed
     */
    public function num($n)
    {
     //缓存代码
      if(self::$pool[$n] >  0){
          return self::$pool[$n];
        }

        if ($n <= 1) {
            return 1;
        }

        $res = $this->num($n - 1) + $this->num($n - 2);
        //缓存代码
        self::$pool[$n] = $res;

        return $res;

    }

    //计算时间
    public  function getMillisecond()
    {
        list($t1, $t2) = explode(' ', microtime());
        return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    }
}
 (new Abc())->index();

加了缓存策略的程序执行时间

加了缓存代码

将代码标注的缓存代码注销

cpu占用

惊为天人的效率差别

远方的代码
请先登录后发表评论
  • 最新评论
  • 总共0条评论