关于static的讨论
之前我提问过static private和private的区别,老徐则说只是访问方式的区别,我接着说网上有人说static能提高性能,老徐抱有不同见解。
今天,我又再次看到有人这么说了:1、如果能将类的方法定义成 static,就尽量定义成 static,它的速度会提升将近 4 倍。
这个说法来自于: http://www.php100.com/html/it/focus/2014/0403/6746.html
不知道这个说法是真是假,作者又是怎么测试并肯定地提出这个说法的呢?
------解决方案--------------------
static声明静态属性,就可以不实例化类而直接访问
他说的提速估计只是对能直接访问不需要实例化的属性 public的
但对于private保护的属性外部是无法直接访问的 所以也就没有提速一说了
------解决方案--------------------
实践是检验真理的唯一标准
class T {<br /> static function foo($n) {<br /> return $n + 1;<br /> }<br /> function foo1($n) {<br /> return $n + 1;<br /> }<br />}<br />function foo($n) {<br /> return $n + 1;<br />}<br />$p = new T;<br /><br />$k = 1000000;<br />$t = microtime(1);<br />for($i=0; $i<$k; $i++) T::foo($i);<br />echo '静态方法 ',microtime(1) - $t, PHP_EOL;<br /><br />$t1 = microtime(1);<br />for($i=0; $i<$k; $i++) foo($i);<br />echo '独立函数 ', microtime(1) - $t1, PHP_EOL;<br /><br />$t2 = microtime(1);<br />for($i=0; $i<$k; $i++) $p->foo1($i);<br />echo '对象方法 ', microtime(1) - $t2, PHP_EOL;<br />静态方法 0.203125