zoukankan      html  css  js  c++  java
  • [PHP]OOP两类写法的性能对比

    在PHP的OOP中我们有常见两种方法调用,对象调用和静态调用。

    下面是一个简单的测试来比较它们的细微差异。

    /**
     * 对象初始化 -> 调用;objectCall.php
     *
     * 测试调用50W次.
     *
     * @farwish
     */
    class Test
    {
        public $a; 
        
        public function __construct($a)
        {   
            $this->a = $a; 
        }   
    
        public function ab()
        {   
            return $this->a;
        }   
    }
    
    $obj = new Test(10);
    
    for ($i = 0; $i < 500000; $i++) {
    
        //$obj = new Test(10);
        $obj->ab();
    }
    /**
     * 静态初始化 -> 调用;staticCall.php
     *
     * 测试调用50W次.
     *
     * @farwish
     */
    class Tester
    {
        public static $a; 
    
        public static function init($a)
        {   
            static::$a = $a; 
        }   
    
        public static function ab()
        {   
            return static::$a;
        }   
    }
    
    Tester::init(10);
    
    for ($i = 0; $i < 500000; $i++) {
    
        //Tester::init(10);
        Tester::ab();
    }

    可以看到,上面两段程序,功能并无分别,测试点也很明确,对象调用和静态调用的差异有多大?

    下面是执行结果,也许我们可以得出一些结论。

    用户层层面对比,实例化较静态调用有一个微小的损失,单个例子看不太明显,但不同项目的应用和访问量差别很大,我们可以做的就是能静态实现就不写对象调用。这点还好说,创建一个对象并调用很正常,没什么大惊小怪。

    如果把上面两处的注释打开,我们将得到下面的结果:

    看的出来,我们放大了这个创建对象的时间消耗,所以要避免在循环中做一些原本可避免的损耗

    :一个小的细节往往也能指引我们做的更好。

    Link:http://www.cnblogs.com/farwish/p/6034671.html

  • 相关阅读:
    2019-1-7 水晶报表
    2018-12-25工作记录 空白行===水晶报表
    2018-7-26-随笔-泛型
    2018-7-20-随笔-转换
    2018-7-18-随笔-接口
    2018-7-17-随笔-params和ref、out用法、事件访问器
    VPS安装metasploit-framework
    Mimiktaz抓取本机密码
    msfvenom生成各类Payload命令
    docker容器开启ssh远程登录
  • 原文地址:https://www.cnblogs.com/farwish/p/6034671.html
Copyright © 2011-2022 走看看