PHP使用类“单例”静态变量提高效率
来源:互联网 发布:拓思软件 编辑:程序博客网 时间:2024/05/24 01:25
再多次需要使用一个变量的时候,我们可以使用类的静态变量来保存这个值,避免多次调用,多次计算导致效率下降!
<?phpclass 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方法,主要作用就是判断这个频繁使用的变量是否存在,如果存在则直接返回,就避免多次去计算该结果(该结果是保持不变的,如果有变化这样是行不通的)。
因此在编程的时候,大家应该多考虑一下效率问题!像这种频繁使用的变量,同时计算起来又比较耗时的运算,我们可以尝试使用静态变量保存,以便二次使用。
- PHP使用类“单例”静态变量提高效率
- 用静态变量提高效率
- PHP:使用静态变量
- 单例模式与静态变量在PHP中
- 单例模式与静态变量在PHP中
- PHP 静态变量的使用
- 为什么单例模式中要使用静态变量
- 单例模式中静态类成员变量初始化问题
- PHP中static静态变量的使用
- php中static静态变量的使用
- java单例静态变量加载顺序
- Java入门学习-学会使用静态变量、掌握单例模式的用法和原理
- 【php】php函数中static静态变量的使用
- 【C#】什么时候使用单例什么时候使用静态类?
- 关于php类静态变量的例子
- PHP 类中的静态变量的继承
- 为什么不能unset类静态变量 (php)
- php静态变量
- WPF属性(二)附加属性
- vs2008起始页中不保存上次打开的历史项目
- File对象的简单操作
- 人类的15个欲望与游戏设计
- 【很棒的解释】进程和内存之间的那点事
- PHP使用类“单例”静态变量提高效率
- 大学,新的开始
- js字符串转数字
- 怎样让 oracle命令行一行显示大于80个字符
- C# 拖放PICTRURE里图片
- GameCenter制作初步完成,另附landscape问题解析
- 手工查杀木马病毒 lpk.dll, usp10.dll
- 《C#妹妹和Objective-C阿姨对话录》(01)认识Objective-C--初次见面的问候
- js 文本框限制