PHP-php静态方法为什么会比动态方法快?
很多人在写PHP的时候很喜欢将类方法定义成静态方法,请从代码原理层面分析为什么静态方法会比静态方法快?还有静态方法定义多了的利弊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
很多人在写PHP的时候很喜欢将类方法定义成静态方法,请从代码原理层面分析为什么静态方法会比静态方法快?还有静态方法定义多了的利弊?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
1.静态的方法在整个应用程序其间存储在内存中,速度快,但占用内存.
2.动态的方法在先声明类实例才能调用类中的方法.
3.一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法。
4.静态方法主要的问题就是数据同步的问题。如果你的静态方法的类中不保存私有变量那么什么问题都不会有的。最好是包要操作的数据全部以参数的方式传到方法中去
5. 静态方法是类方法,调用时不需要创建类实例。
6. 静态方法是静态绑定到子类,不是被继承。
静态方法快的原因:
静态变量或方法是暂存于内存之中,下次访问的时候直接从内存中读取出来。而且可供其它的方法调用。这样在程序设计的时候有一定的方便,但是同时也产生了一个问题。如果静态方法越多的话,占用内存的位也比较多,那么内存中移动的话也会比较占资源。 所以静态方法或变量,如果滥用的话,性能在一定程度上会下降。而PHP 的垃圾回收机制对静态方法或变量,认为其还驻于内存之中,所以性能可想而知:)
php静态方法为什么会比动态方法快,我想来想去,其实质并不是说它存在内存中,php的类成员其实并无明显的动静态之分,所有成员在没明确声明的情况下都会被当成静态成员存放在特定的内存区中,所以调用静态成员函数就和调用普通函数一样,速度很快,但调用动态类则不同,它要以这个类结构作为样本,在内存中重新生成一个对象实例,所以多了一个过程,这对于简单的类来说,可能不算什么,但对于复杂的类来说这是明显影响效率的。
另外对于内存占用,使用静态方法会不会造成内存占用过多,你不声明静态方法,系统依然会把成员当成静态,因此对于一个完全静态方法的类和一个完全动态但没声明实例对象的类占用内存几乎是一样的,所以对于比较直接的逻辑,都建议直接用静态成员方法,当然,一些复杂或对像化明显的逻辑,如果完全用静态类也不是没可能,但那样就失去类的意义了。