php中靜態方法static和非靜態方法效率對比
今天在看這篇文章的時候http://jingyan.baidu.com/article/6b97984d7892d21ca2b0bfc2.html發現第一句是這個
如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。
實踐是檢驗代碼執行效率的唯一標準,於是趁著下班回家有點時間,做了個小測試:
先上測試代碼(如果有不對的地方,請大家指正哈):
測試環境:
/test # php -vPHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15) Copyright (c) 1997-2013 The PHP GroupZend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
/test # uname -aDarwin 192.168.0.101 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
系統配置可以看這篇文章中的:http://blog.csdn.net/lamp_water/article/details/20968155
test();}echo (microtime(true) - $start) ."\n";$start = microtime(true);for($i=0;$i<10000000;$i++) { staticTest::testStatic();}echo microtime(true) - $start;
迴圈執行一千萬次執行結果如下:
/test # php staticTest.php
2.2938342094421
1.1871800422668
第二次執行結果:
2.303295135498
1.1807670593262
執行很多次以後,都在2.3和1.18附近。可見,雖然沒有文章中說的效率提升那麼恐怖,效能的提升方面確實提升了一倍左右。
因此還是建議:
如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近1倍。
對於一個正常的php架構,裡面的類和方法還是非常多的,如果我們能夠做成靜態方法,還是使用靜態方法比較好,效率比較高。