介紹 對於php效能問題,議論最多的就是__autoload()方法,很多人提到這個方法非常影響效能。還有人說opcode也能影響到__autoload()方法,所以針對這兩點我做了個測試。 最終發現__autoload方法在效能方面的影響不是很大的。有的網友說不用__autoload(),帶來的維護成本比效能成本高無數倍(比較贊同)。 環境 PHP:5.3.9 ——以fastcgi模式啟動 Nginx:1.1.12 eaccelerator:0.9.6.1 :
啟動介面:
eAccelerator(在php.ini檔案中)配置情況:
檔案結構:(每一個Test檔案都是6000多行代碼的檔案)
測試:帶著eAccelerator緩衝進行測試 測試代碼:經過__autoload載入
圖1
我在瀏覽器裡通過重新整理得到的結果分別如下:Total Time:0.10401391983032Total Time:0.10252094268799Total Time:0.095267057418823Total Time:0.10013008117676Total Time:0.096842050552368Total Time:0.097998142242432Total Time:0.10348510742188Total Time:0.096648931503296 測試:不經過__autoload()
圖2
測試結果——通過刷瀏覽器Total Time:0.10309100151062Total Time:0.10285210609436Total Time:0.10154414176941Total Time:0.097845792770386Total Time:0.099545001983643Total Time:0.10166597366333 最終看到的結果:autoload方法沒有出現明顯的效能下降 測試:取消eAccelerator緩衝進行測試 圖1的測試結果Total Time:0.24992394447327Total Time:0.25681900978088Total Time:0.25327301025391Total Time:0.22580695152283Total Time:0.22656512260437Total Time:0.22530484199524Total Time:0.23080611228943 圖2的測試結果Total Time:0.23054909706116Total Time:0.22633790969849Total Time:0.23442888259888Total Time:0.2350070476532Total Time:0.22897601127625Total Time:0.23207712173462
__autoload()方法在效能上還是沒有明顯的影響。
總結 通過上面的兩組實驗得出:1>__autoload方法沒有明顯的效能損失。所以大家不要介於使用__autoload方法。2>opcode對代碼的影響是比較大的,明顯使用opcode的時候,php代碼執行速度提高了將近2倍多。