我有一个定制的MVC PHP框架,我正在重写过程中,并且有一个关于性能和魔术方法的问题。对于框架的模型部分,我想如果魔法会导致太多的性能值得使用。我的意思是访问(读取和写入)模型数据将成为最常见的事情之一。是否使用__get
/__set
魔法方法对MVC框架的模型部分等重度使用功能的性能影响过大?__get/__ set/__用PHP调用性能问题
5
A
回答
8
衡量它。
它肯定有很大的性能影响,特别是考虑到函数调用在PHP中很贵。在下一版本的PHP中,这种差异会更大,它实现了优化,可以显着更快地定期访问已声明的实例属性。
也就是说,PHP很少是瓶颈。 I/O和数据库查询通常需要更多时间。但是,这取决于您的使用情况;只有这样才能确定它的基准。
这也是其他与魔术方法的可读性问题。他们经常退化成一个大的声明并损害代码的完成,这两者都可能在编程效率方面有所提升。
3
纯粹从我的经验来看,它增加了很多开销。在大约4000 __get
的页面上(是的,该页面上有相当多的数据)性能显着降低,直到它变得不可接受。我丢弃了所有__set
的& __get
的变量,这些变量不需要更改其他数据或要检查外部依赖关系(如外键),之后生成该页面的时间约为15%的时间它采取之前。
0
我刚刚问过自己这个同样的问题,得出了同样的结论:最好用传统方式设置属性。 __get()+大量开关减慢一切下降
7
这是一个an article(三岁)与一些基准。运行你自己的测试,看看它如何影响你的代码。
一般来说,它们要慢得多。但他们是瓶颈吗?这取决于你在做什么。如果你关心速度,它会停止在哪里? foreach
循环比for
循环慢,但大多数人不会将其所有代码重写为使用for
。
只使用PHP意味着代码的速度并不是那么重要。就个人而言,我会赞成任何风格都可以更容易编程。
相关问题
- 1. PHP性能问题
- 2. 用于PHP的ORM - 性能问题
- 3. PHP error_log性能问题
- 4. PHP/MySQL性能问题
- 5. 调试HXT性能问题
- 6. 调试MySQL性能问题
- 7. 谁可以调用__get__,__set__和__del__?
- 8. Django ReverseSingleRelatedObjectDescriptor .__ set__ ValueError
- 9. PHP调用bash的问题
- 10. PHP调用堆栈问题
- 11. 应用性能问题Asp.net
- 12. PHP vs python,php中的性能问题
- 13. AS3:性能问题调用带有空PARAM事件功能
- 14. 性能问题
- 15. 性能问题
- 16. 性能问题
- 17. 性能问题
- 18. 性能问题
- 19. 性能问题
- 20. 性能问题
- 21. 性能问题
- 22. 使用__get__,__set__字典项?
- 23. 依赖注入,PHP和性能问题
- 24. PHP MySQL - 更新6.5m行性能问题
- 25. 节俭php lib性能问题
- 26. 性能问题与Apache,PHP和Symfony的〜
- 27. 调试Visual Studio扩展性能问题
- 28. Angular2 NGRX性能问题在调度?
- 29. 反应原生调试性能问题
- 30. 调整GLKView的性能问题。
你应该尝试找到另一种方式来使用它们,只有在必要时才使用它们。在我看来,除了速度缓慢之外,它们更难以阅读和维护。 – 2010-07-25 21:45:30