使用PHP调用__get/__ set/__调用性能问题

rya*_*zec 5 php performance magic-methods

我有一个定制的MVC PHP框架,我正在重写,并对性能和魔术方法有疑问.使用框架的模型部分,我在想是否__get/ __setmagic方法会导致太多的性能损失值得使用.我的意思是访问(读取和写入)模型数据将是最常见的事情之一.对于像MVC框架的模型部分这样的大量使用功能,__get/ __setmagic方法的使用是否太大了?

Art*_*cto 8

测量它.

它肯定有很大的性能,特别是考虑到PHP中的函数调用很昂贵.在PHP的下一个版本中,这种差异会更大,它实现的优化可以显着更快地呈现对声明的实例属性的常规访问.

也就是说,PHP很少成为瓶颈.I/O和数据库查询经常需要更多时间.但是,这取决于您的使用情况; 唯一可以确定基准的方法.

这也是魔术方法的其他可读性问题.它们经常退化成一个大的switch声明并破坏代码完成,这两者都可能会影响编程生产力.

  • 当您[使用@method注释类时]某些IDE允许魔术方法的代码完成(http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_tags.method.pkg.html) (3认同)

Mat*_*hew 7

是一篇有三个基准的文章(三年前).运行您自己的测试,看看它如何影响您的代码.

一般来说,它们要慢得多.但他们是瓶颈吗?这取决于你在做什么.如果你担心速度,它会停在哪里?该foreach环比慢for循环,但大多数人不重写所有他们的代码使用for.

只使用PHP意味着代码的速度并不是那么重要.就个人而言,我倾向于任何风格使其更容易编程.