php7中新特性的總結

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於php7中新特性的總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

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 標識一個全域變數,這樣這個全域變數就是線程獨享的了,不同線程的修改不會相互影響。

  • 指定函數參數、傳回值類型

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_dataopline 通過寄存器來進行儲存,避免了傳參導致的頻繁出入棧操作,同時,寄存器相比記憶體的訪問速度更快。

  • 新的參數解析方式

PHP5.x 通過 zend_parse_parameters() 解析函數的參數,PHP7 提供了另外一種方式,同時保留了原來的方式,但是新的解析方式速度更快。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.