起因是因为有人建议尽量别使用静态方法,但是现在有的框架(laravel5&yii2又大量使用静态方法,让我产生了矛盾。度娘告诉我静态方法会一直占用内存,但是速度会比动态方法快;动态方法速度慢但运行完成后内存就销毁了。。。测试环境如下(好像环境没有什么卵用?):shellLinuxMint17PHP5.6.9(cli)(built:Jun22201500:06:37)测试代码如下,很不专业的样子,望斧正:phpclassTest{publicfunctiondongtai(){$i=time();$i++;}publicstaticfunctionjingtai(){$i=time();$i++;}}printf('memoryusage:%01.2fMB',memory_get_usage()/1024/1024);echo'
';$begin=microtime(1);for($i=0;$i<1000000;$i++){(newTest())->dongtai(2);}echomicrotime(1)-$begin,'
';printf('memoryusage:%01.2fMB',memory_get_usage()/1024/1024);echo'
';$begin=microtime(1);for($i=0;$i<1000000;$i++){Test::jingtai(2);}echomicrotime(1)-$begin,'
';printf('memoryusage:%01.2fMB',memory_get_usage()/1024/1024);测试结果如下:memoryusage:0.23MB1.0004889965057memoryusage:0.24MB0.86434984207153memoryusage:0.24MB那么问题来了:静态方法到底是不是如度娘所说,速度快但内存无法及时回收,动态方法速度慢但能及时回收内存?除此之外是否还有其它区别?是否不建议大量使用静态方法或者压根就不建议使用静态方法?我问这个问题之前可是问过度娘的啊,就是因为众说纷坛,SO。。。
达令说
呼唤远方
相关分类