设为首页 收藏本站
查看: 724|回复: 0

[经验分享] PHP使用类“单例”静态变量提高效率

[复制链接]

尚未签到

发表于 2017-4-8 11:29:38 | 显示全部楼层 |阅读模式
  再多次需要使用一个变量的时候,我们可以使用类的静态变量来保存这个值,避免多次调用,多次计算导致效率下降!


<?php
class TestExplame{
public static $myName;
public static function setMyName(){
self::$myName = self::getMyNumberName();
}
public static function getMyNumberName(){
$sum = 0;
for($i = 0; $i<10000; $i++){
$sum +=  $i;
}
return "telmer_$sum";
}
public static function getAllOfName($number){
$count = 0;
$nameArray = array();
while($count < $number){
$nameArray[$count] = "telmer_$count" . self::getMyNumberName();
$count++;
}
return $nameArray;
}
}



//如果我们使用如下方式调用,将会产生一大堆效率问题
require_once "test.php";
TestExplame::getAllOfName(8000);

这个大概计算了一下接近15秒左右;

而如果我们将代码变化一下,如下:时间会成为多少呢?

class TestExplame{public static $myName;public static $numberName;public static function getstaticNumberName(){if(isset(self::$numberName)){return self::$numberName;}self::$numberName = self::getMyNumberName();return self::$numberName;}public static function setMyName(){self::$myName = self::getMyNumberName();}public static function getMyNumberName(){$sum = 0;for($i = 0; $i<10000; $i++){$sum +=  $i;}return "telmer_$sum";}public static function getAllOfName($number){$count = 0;$nameArray = array();while($count < $number){$nameArray[$count] = "telmer_$count" . self::getstaticNumberName();$count++;}return $nameArray;}
}

再次来执行一次这个结果查看一下时间

require_once "test.php";
TestExplame::getAllOfName(8000);

测试了一下1秒之内就可以完成!

上面的例子有点类似于单例设计模式,但是这个并非是单例。

以上主要方法是添加了一个getstaticNumberName方法,主要作用就是判断这个频繁使用的变量是否存在,如果存在则直接返回,就避免多次去计算该结果(该结果是保持不变的,如果有变化这样是行不通的)。

因此在编程的时候,大家应该多考虑一下效率问题!像这种频繁使用的变量,同时计算起来又比较耗时的运算,我们可以尝试使用静态变量保存,以便二次使用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361911-1-1.html 上篇帖子: php的 log4php 安装配置详解 (附下载地址) 下篇帖子: 魔兽争霸之PHP设计模式-工厂模式[Factory]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表