天天看點

PHP如何提高性能

PHP為什麼慢?

PHP最初設計并非解決計算密集型的應用場景,即它為了提升開發效率而犧牲了執行效率。PHP的一個很大的特點是它的弱類型特性,它實際對應的C的存儲結構是zval:

這個結構體将會占據遠比C變量多得多的記憶體。單個變量記憶體消耗可能還不明顯,但一旦用到PHP的數組等,則複雜指數上升(數組的實作是HashTable)。然後Zend引擎執行時将這些PHP代碼編譯為opcode(PHP中間位元組碼),由Zend引擎逐行解析執行。同樣的操作對比C來說,PHP消耗了更多的CPU和記憶體等系統資源。除此之外還有記憶體自動回收、變量類型判斷等,都會增加系統資源的消耗。

PHP腳本在啟動和關閉的過程,本身也有着一系列的初始化和清理工作,同樣也是占據了不少的耗時:

通常情況下,PHP執行效率排行是:

1、最快的是PHP語言結構(isset、echo等),PHP語言的一部分(它們根本不是函數)

2、然後比較快的是PHP的原生和擴充函數。PHP擴充基于Zend API之上,用C實作的功能,執行效率和C++/Java是屬于同一數量級。