我有两个问题:
1)范围解析运算符(::
)对于静态访问是慢的(或者对于实例化的类慢于->
)?
这个名字有点暗示它必须“解决”一个范围,这就是我要问的原因。
2)重载怎么样,特别是__get()
和__set()
?
我一直在避免使用它们,因为我听说它们对性能有整体的负面影响。
提前感谢您的任何答案/建议。
答案 0 :(得分:2)
对于静态方法调用,引擎必须解析类和函数。这需要两次哈希查找。
例如,方法调用引擎只进行一次哈希查找。
因此实例方法调用比静态方法调用快一点。
__ get和__set具有属性查找的开销(引擎在调用__get或__set之前检查属性是否存在)加上方法调用的开销。
所以这比使用getter或setter慢两倍,比直接访问属性慢3到4倍。
答案 1 :(得分:2)