php 静态变量效率,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方法,主要作用就是判断这个频繁使用的变量是否存在,如果存在则直接返回,就避免多次去计算该结果(该结果是保持不变的,如果有变化这样是行不通的)。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值