测试php单例模式和静态访问,实例化访问的效率_扶摇网络

我们只做利于SEO的网站

测试php单例模式和静态访问,实例化访问的效率

来源:扶摇网络 作者:网站建设/SEO优化专家 浏览: 发布日期:2021-04-29 10:17:38
[导读]:// 测试的类class Memory{    private static $a= null;    public function __construct()    ...

// 测试的类
class Memory
{    private static $a= null;    public function __construct()
    {        return self::$a;
    }    public static function getName(){        if(empty(self::$a)){

            self::$a = new static();
        }        return self::$a;
    }    public static function getOk(){        return self::$a;
    }
}
        echo '开始内存:'.memory_get_usage(), '
';        $a = memory_get_usage();        $stime=microtime(true); //获取程序开始执行的时间
        $tmp = str_repeat('hello', 1000);        for($i=1;$i<9999999;$i++){//            $memory = new Memory();
            $memory = Memory::getOk();//            $memory = Memory::getName();        }        echo '运行后内存:'.memory_get_usage(), '
';        $b = memory_get_usage();        unset($tmp);        echo '内存占用:'.($b-$a)."
";        /**
         *你要运行的程序
         **/
        $etime=microtime(true);//获取程序执行结束的时间
        $total=$etime-$stime;   //计算差值
        echo "

结果:

1.实例化
开始内存:1785568运行后内存:1795352内存占用:9784[页面执行时间:2.3476557731628 ]秒

2.静态访问
开始内存:1785584运行后内存:1795320内存占用:9736[页面执行时间:1.1992189884186 ]秒

3.单例模式
开始内存:1785536运行后内存:1795224内存占用:9688[页面执行时间:1.6123049259186 ]秒

总结:从内存来看,差别不大;时间来看,静态访问最好

例如,当我们认为网站是实体,那么把连接数据库这个事情当成网站的一个动作,就是在网站类中实现该静态方法。然而为了节省内存,我们以为这个静态方法在程序初始化时就载入,这样就节省了内存,实际上我们在使用连接数据库的时候仍然是调用了这个方法,仍然需要重新连接一次,在内存中仍然在重复造连接资源。

如果我们把数据库当成一个实体,那么连接数据库这种事情当然是由这个实体来办的,然而为了节省内存,我希望所有用到数据库实体的情况都只使用那个已存在的实例,而不是每次都去创建连接,这时候单例模式就发挥了作用。


大家有疑问,可以在下边留言交流,我有空会及时回复,本人英文网名:Cheng,中文网名:陆小凤。
免责声明:本文由专注多年品牌设计公司扶摇网络整理编写,旨在为企业提供网络知识分享,如有侵权请联系删除,转栽请注明出处.
加载中~
微信咨询网站建设

扫一扫高效沟通

访问网站建设手机端

扫描访问手机网站

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!