我有2個問題:PHP:範圍解析操作符與超載性能比較
1)是範圍解析操作符(::
)慢於靜態訪問(或大於->
慢的一個實例化類)?
名稱有點建議它必須「解決」範圍,這就是爲什麼我問。
2)過載情況如何,特別是__get()
和__set()
?
我一直在避免使用它們,因爲我聽說他們對性能有着總體的負面影響。
在此先感謝您的任何答案/建議。
我有2個問題:PHP:範圍解析操作符與超載性能比較
1)是範圍解析操作符(::
)慢於靜態訪問(或大於->
慢的一個實例化類)?
名稱有點建議它必須「解決」範圍,這就是爲什麼我問。
2)過載情況如何,特別是__get()
和__set()
?
我一直在避免使用它們,因爲我聽說他們對性能有着總體的負面影響。
在此先感謝您的任何答案/建議。
對於靜態方法調用,引擎必須解析類和函數。這花費了兩次散列查找。
例如方法調用引擎只做一次散列查找。
所以實例方法調用比靜態方法調用快一點。
__get和__set具有屬性查找的開銷(引擎在調用__get或__set之前檢查屬性是否存在)以及方法調用的開銷。
所以這比使用getter或setter慢兩倍,比直接訪問屬性慢3到4倍。
你有沒有做過任何基準測試?如果有的話,訪問一個靜態屬性應該是QUICKER,因爲PHP不必精確地確定哪個對象的實例正在被訪問 - 它只是潛入對象定義中。 –