Chinaunix首页 | 论坛 | 博客
  • 博客访问: 807770
  • 博文数量: 42
  • 博客积分: 10080
  • 博客等级: 上将
  • 技术积分: 1970
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-06 23:06
文章存档

2011年(1)

2010年(7)

2009年(4)

2008年(30)

我的朋友

分类:

2008-10-25 01:05:15

写了个脚本来测试PHP5 的类的setter()的性能,跑了100000次,
在我的windows XP破机上速度是 0.68417501449585 -- 0.2145471572876
在linux上测试0.30176782608032 -- 0.096343040466309
所有,在设计类的时候有必要用setter,getter的尽管放心性能上的问题

<?php
$xtimes = 100000;
$att = '';
for ($i=0;$i<$xtimes;$i++) {
    $att .= "\r\n\tpublic \$var$i = $i;";
}
$s = <<<END
<?php\r\n
class MC {
$att
\r\n
}\r\n

END;
$s .= '
$xn = '
. $xtimes . ';

class Setter {
   public $n;
   private $x = array();

   private function __get($nm) {
       if (isset($this->x[$nm])) {
           $r = $this->x[$nm];
           return $r = $this->x[$nm];;
       } else {
           return false;
       }
   }

   private function __set($nm, $val) {
       if (!isset($this->x[$nm])) {
           $this->x[$nm] = $val;
       }
   }

   private function __isset($nm) {
       return isset($this->x[$nm]);
   }

   private function __unset($nm) {
       unset($this->x[$nm]);
   }
}

$foo = new Setter();
$star = microtime(1);
for ($i=0; $i<$xn;$i++) {
    $var = "var$i";
    $foo->$var = $i;
}
$out = microtime(1) - $star;
print "\n";

$foo2 = new MC();
$star = microtime(1);
for ($i=0; $i<$xn;$i++) {
    $var = "var$i";
    $foo2->$var = $i;
}
$out .= " -- " . (microtime(1) - $star);
print $out . " (this file is save at " . __FILE__ . \')\';
'
;
file_put_contents('testxxx.php', $s);
require 'estxxx.php';
unlink('testxxx.php'); // 把这行注释掉就可以看生成的文件对不对


?>


阅读(1146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~