关于static的讨论 static声明静态属性,就可以不实例化类而直接访问他说的提速估计只是对能直接访问不需要实例化的属性 public的但对于private保护的属性外部是无法直接访问的 所以也就没有提速一说了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 实践是检验真理的唯一标准class T { static function foo($n) { return $n + 1; } function foo1($n) { return $n + 1; }}function foo($n) { return $n + 1;}$p = new T;$k = 1000000;$t = microtime(1);for($i=0; $i<$k; $i++) T::foo($i);echo '静态方法 ',microtime(1) - $t, PHP_EOL;$t1 = microtime(1);for($i=0; $i<$k; $i++) foo($i);echo '独立函数 ', microtime(1) - $t1, PHP_EOL;$t2 = microtime(1);for($i=0; $i<$k; $i++) $p->foo1($i);echo '对象方法 ', microtime(1) - $t2, PHP_EOL;静态方法 0.203125独立函数 0.203125对象方法 0.21875结论你自己下 依 #3 的说法,加上$t3 = microtime(1);for($i=0; $i<$k; $i++) { $p = new T; $p->foo1($i);}echo '对象方法 ', microtime(1) - $t3, PHP_EOL;静态方法 0.234375独立函数 0.1875对象方法 0.234375对象方法 0.40625也不会有 4 倍之多 是几倍我就不关心了,我只关心是否快了。anyway,感谢各位的热心参与。 “如果能将类的方法定义成 static,就尽量定义成 static”如果按这句话来说倒是对的但怎样才算"能"?如果大部分方法都弄成static,在某种意义上就不是面向对象的思维了类和对象我觉得更多更大的考虑是它们之间的起承转接~以上纯个人意见 使用单例模式的话对象只new一次也多消耗2#的那点时间和new一次对象时间,差不多可以忽略了但是说起来单例还是比静态方法慢一丁点啊,还占了点内存,但是单例支持继承... 理论上来说肯定是的,实际性能差别在今天的计算机上肯定不是很明显。new一下整个类被实例化为对象。如果是static方法的话,类只相当于一个name space的作用,把隶属于其name space下的函数call出来 PHP全局变量跟JS全局变量概念有什么不一样? where条件该如果修改 用exec调用可执行文件进程被终止如何解决? [急求:]使用XML取得数据后在本地电脑可以显示,上传到服务器上就无法显示数据的问题 用PHP与XML联手进行网站编程[2] form提交的空input会显示数字0? 我是菜鸟 请各位前来指教 关于mysql+php的错误!请教!!! 为什么在tmp目录下有session的ID,但在程序中session去不好用. 如何把一个datetime型数据转换成时间戳格式? 京东上的购物车问题 web打印控件-pazu打印控件的使用心得
static function foo($n) {
return $n + 1;
}
function foo1($n) {
return $n + 1;
}
}
function foo($n) {
return $n + 1;
}
$p = new T;$k = 1000000;
$t = microtime(1);
for($i=0; $i<$k; $i++) T::foo($i);
echo '静态方法 ',microtime(1) - $t, PHP_EOL;$t1 = microtime(1);
for($i=0; $i<$k; $i++) foo($i);
echo '独立函数 ', microtime(1) - $t1, PHP_EOL;$t2 = microtime(1);
for($i=0; $i<$k; $i++) $p->foo1($i);
echo '对象方法 ', microtime(1) - $t2, PHP_EOL;
静态方法 0.203125
独立函数 0.203125
对象方法 0.21875结论你自己下
for($i=0; $i<$k; $i++) {
$p = new T;
$p->foo1($i);
}
echo '对象方法 ', microtime(1) - $t3, PHP_EOL;
静态方法 0.234375
独立函数 0.1875
对象方法 0.234375
对象方法 0.40625也不会有 4 倍之多
anyway,感谢各位的热心参与。
如果按这句话来说倒是对的
但怎样才算"能"?如果大部分方法都弄成static,在某种意义上就不是面向对象的思维了类和对象我觉得更多更大的考虑是它们之间的起承转接~
以上纯个人意见
也多消耗2#的那点时间和new一次对象时间,差不多可以忽略了
但是说起来单例还是比静态方法慢一丁点啊,还占了点内存,但是单例支持继承...