0

[php5]静态类比全局数组快


好吧,我承认,标题是有点误导人了……

第一种测试方法:

<?
/**
 * @date : Wed Jul 04 11:34:00 CST 2007 11:34:00
 * @author : Deng Wei <dengwei@gmail.com>
 * @package : test
 * @version : $Rev$
 * @info : $Id$
 */

$sth_like_config = array(
 ’a' => 1,
 ’b' => 2,
);

function get_config_a()
{
 global $sth_like_config;
 foreach ( range(1,10000) as $i )
 {
  $b = $sth_like_config['a'];
 }
}

StaticConfig
{
 public static $sth_like_config = array(
  ’a' => 1,
  ’b' => 2,
 );
}

function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}

/**
 * start test
 */

$s = microtime_float();
get_config_a();
echo microtime_float()-$s;
echo "\n";

$s = microtime_float();
foreach ( range(1,10000) as $i )
{
 $b = StaticConfig::$sth_like_config['a'];
}
echo microtime_float()-$s;
echo "\n";

?>

结果:

0.15xxxxxxxx
0.18xxxxxxxxx

按上面这种方式测试的话是数组比静态类快,原因是我们在函数里调用的全局数组,只用了 global 一次,在同一作用域下变量比类快,这是一定的。但是在实际环境里,比如我们的配置数组经常要在一些函数里用,那么就会有多次 global 声明,让我们换一种方式测试。

测试方法二:

<?php
/**
 * @date : Wed Jul 04 11:34:00 CST 2007 11:34:00
 * @author : Deng Wei <dengwei@gmail.com>
 * @package : test
 * @version : $Rev$
 * @info : $Id$
 */

$sth_like_config = array(
 ’a' => 1,
 ’b' => 2,
);

function get_config_a()
{
 global $sth_like_config;
 return $sth_like_config['a'];
}

class StaticConfig
{
 public static $sth_like_config = array(
  ’a' => 1,
  ’b' => 2,
 );
}

function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}

/**
 * start test
 */

$s = microtime_float();
foreach ( range(1,10000) as $i )
{
 $b = get_config_a();
}
echo microtime_float()-$s;
echo "\n";

$s = microtime_float();
foreach ( range(1,10000) as $i )
{
 $b = StaticConfig::$sth_like_config['a'];
}
echo microtime_float()-$s;
echo "\n";

?>

结果:

0.51952910423279
0.18489503860474

可见 global 有多慢了,并且我们经常还会因为一些原因忘记写他,所以我的“建议”是把一些全局变量都放到静态类里,这样还用的时候就不用一直记着去 global 声明了,并且通过类来访问,我们还可以对访问进行一些控制。:)

不知道您是怎么想?我现在是把配置信息都放到静态类里了。终于告别了“global”~!

Random Posts Recent Comments

  • 女友糖尿病害我蛀牙 Says:

    汗一个…...

  • Htj06 Says:

    zhenyouchuangyi...

  • 电商圈 Says:

    试图该怎么建立啊,,怎在程序中是吸纳...

  • edward Says:

    看得人心旷神怡,好文,情不自禁的顶一下...

  • Daniel Says:

    我也在处理这个问题,没有找到好的方法。我用了楼上兄弟的方法,还是可以的。不知道您找到好的方法了吗、我暂时楼上兄弟的方法。...

  • 卡,卡 Says:

    弱弱问一句:博主,你博客的模板这样设计pv高吗?...

  • 站长工具 Says:

    博主,兔年快乐!...

  • health Says:

    great post!!I hope I can read more in your website....

  • pdu Says:

    好博文,支持分享...

  • 站长工具 Says:

    博主的文章很不错,我是站长工具-站长精灵的作者,一款专业的SEO工具软件(可以帮您提高博客的流量),想跟您交换个链接,不知可否...

Tag Cloud

arm audio blog brew cache class debug flash google html j2me java javascript Joke linux lua mobile mtk php python ror ruby server shell stream unix web windows 优化 动态加载 女人 女生 平台 开发 手机 技术 流媒体 测试 漫画 生活 男人 男生 缓存 芯片