首页 / PHP / php静态方法到底应不应该使用?
php静态方法到底应不应该使用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php静态方法到底应不应该使用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2528字,纯文字阅读大概需要4分钟。
内容图文
![php静态方法到底应不应该使用?](/upload/InfoBanner/zyjiaocheng/239/b6069ed7a29a452680dd8cb2ffba56db.jpg)
静态方法
,但是现在有的框架(laravel5
& yii2
又大量使用静态方法
,让我产生了矛盾。度娘告诉我静态方法会一直占用内存
,但是速度会比动态方法快
;动态方法速度慢
但运行完成后内存就销毁了。。。
测试环境如下(好像环境没有什么卵用?):
shell
LinuxMint 17 PHP 5.6.9 (cli) (built: Jun 22 2015 00:06:37)
测试代码如下,很不专业的样子,望斧正:
php
'; $begin = microtime(1); for ($i=0; $i < 1000000; $i++) { (new Test())->dongtai(2); } echo microtime(1)-$begin,'
'; printf('memory usage: %01.2f MB', memory_get_usage()/1024/1024); echo '
'; $begin = microtime(1); for ($i=0; $i < 1000000; $i++) { Test::jingtai(2); } echo microtime(1)-$begin,'
'; printf('memory usage: %01.2f MB', memory_get_usage()/1024/1024);
测试结果如下:
memory usage: 0.23 MB
1.0004889965057
memory usage: 0.24 MB
0.86434984207153
memory usage: 0.24 MB
那么问题来了:
-
静态方法
到底是不是如度娘所说,速度快但内存无法及时回收,动态方法速度慢但能及时回收内存
? - 除此之外是否还有
其它区别
? - 是否
不建议大量使用静态方法
或者压根就不建议使用静态方法
? - 我问这个问题之前可是问过度娘的啊,就是因为众说纷坛,SO。。。
回复内容:
起因是因为有人建议尽量别使用静态方法
,但是现在有的框架(laravel5
& yii2
又大量使用静态方法
,让我产生了矛盾。度娘告诉我静态方法会一直占用内存
,但是速度会比动态方法快
;动态方法速度慢
但运行完成后内存就销毁了。。。
测试环境如下(好像环境没有什么卵用?):
shell
LinuxMint 17 PHP 5.6.9 (cli) (built: Jun 22 2015 00:06:37)
测试代码如下,很不专业的样子,望斧正:
php
'; $begin = microtime(1); for ($i=0; $i < 1000000; $i++) { (new Test())->dongtai(2); } echo microtime(1)-$begin,'
'; printf('memory usage: %01.2f MB', memory_get_usage()/1024/1024); echo '
'; $begin = microtime(1); for ($i=0; $i < 1000000; $i++) { Test::jingtai(2); } echo microtime(1)-$begin,'
'; printf('memory usage: %01.2f MB', memory_get_usage()/1024/1024);
测试结果如下:
memory usage: 0.23 MB
1.0004889965057
memory usage: 0.24 MB
0.86434984207153
memory usage: 0.24 MB
那么问题来了:
-
静态方法
到底是不是如度娘所说,速度快但内存无法及时回收,动态方法速度慢但能及时回收内存
? - 除此之外是否还有
其它区别
? - 是否
不建议大量使用静态方法
或者压根就不建议使用静态方法
? - 我问这个问题之前可是问过度娘的啊,就是因为众说纷坛,SO。。。
主要是语义上的差别,实例方法(你说的动态方法)与实例有关,静态方法与实例无关。
要调用实例方法先要创建实例,创建实例可能有开销,但性能上的差别并不重要,主要还是看语义。
个人的观点是在适合的时候使用就行了,存在既有其存在的价值嘛。
比如Yii2中的helpers方法,你总不能先new下,然后在调用吧。
生成静态文件的话会好点吧
这点内存完全不是你考虑的范围 先保证数据库没瓶颈再说吧
该出手时就出手,没必要就别出手
PHP的面向对象系统性能没有面向过程高!千万别用任何对象!一定要只用用面向过程的方式写!
PHP的框架都没有原始PHP直接输出HTML性能高!千万别用任何框架!一定要直接用PHP输出HTML!
逃)
内容总结
以上是互联网集市为您收集整理的php静态方法到底应不应该使用?全部内容,希望文章能够帮你解决php静态方法到底应不应该使用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。