PHP7 從發布到現在已經有快三年的時間了,現在已經發展到 PHP7.2.9 版本了。它的發布給 PHP 帶來了很大的性能提升,這主要是得益于 PHP 對 Zend 引擎的深度優化,同時還降低了 PHP 對系統的資源占用。
主要的變化有以下幾點:
抽象語法樹
在PHP之前的版本中,PHP代碼在語法解析階段直接生成了 ZendVM
指令,也就是在 zend_language_parser.y
中直接生成 opline
指令,這使得編譯器與執行器耦合在一起。
PHP7 中增加了抽象語法樹,首先是將PHP代碼解析生成抽象語法樹,然后將抽象語法樹編譯為 ZendVM
指令。抽象語法樹的加入使得 PHP 的編譯器與執行器很好地隔離開,編譯器不需要關心指令的生成規則,然后執行器根據自己的規則將抽象語法樹編譯為對應的指令,執行器同樣不需要關心該指令的語法規則是什么樣子的。
Native TLS
PHP7 中使用 Native TLS
(線程局部存儲)來保存線程的資源池,簡單地講就是通過 __thread
標識一個html' target='_blank'>全局變量,這樣這個全局變量就是線程獨享的了,不同線程的修改不會相互影響。
指定函數參數、返回值類型
PHP7中可以指定函數參數及返回值的類型。
zval 結構的變化
PHP7 將引用計數轉移到了具體的 value
中,這樣更合理。除此之外,zval
結構的大小也從 24byte 少到了 16byte,這是 PHP7 能夠降低系統資源占用的一個優化點所在。
異常處理
PHP5.x 中很多操作會直接拋出 error 錯誤,PHP7 中將多數錯誤改為了異常拋出,這樣一來就可以通過 try catch
捕捉到。
HashTable 的變化
PHP7 中 HashTable
有非常大的變化,HashTable
結構的大小從 72byte 減小到了 56byte,同時,數組元素 Bucket
結構也從 72byte 減小到了 32byte。
執行器
在 PHP7 中不再采用傳參的方式,而是將 execute_data
、opline
通過寄存器來進行存儲,避免了傳參導致的頻繁出入棧操作,同時,寄存器相比內存的訪問速度更快。
新的參數解析方式
PHP5.x 通過 zend_parse_parameters()
解析函數的參數,PHP7 提供了另外一種方式,同時保留了原來的方式,但是新的解析方式速度更快。
相關推薦:
PHP7 新特性 簡介
PHP7新特性介紹
以上就是php7中新特性的總結的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答