亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php7優化了什么

發布時間:2020-10-27 14:51:59 來源:億速云 閱讀:140 作者:小新 欄目:編程語言

php7優化了什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

一  zval使用棧內存

在Zend引擎和擴展中,經常要創建一個PHP的變量,底層就是一個zval指針。之前的版本都是通過MAKE_STD_ZVAL動態的從堆上分配一個zval內存。

而PHP7可以直接使用棧內存。PHP代碼中創建的變量也進行了優化,PHP7直接在棧內存上預分配zval。這樣節約了大量內存分配和內存管理的操作。

二 zend_string存儲hash值,array查詢不再需要重復計算hash

PHP7為字符串單獨創建了新類型叫做zend_string,除了char *指針和長度之外,增加了一個hash字段,用于保存字符串的hash值。

PHP中array是核心數據結構,PHP程序中往往都有大量的$array[$key]操作,雖然hashtable查找的時間復雜度是O(1),但$key要轉為hash值是要經過計算的。

不僅僅是array操作,實際上PHP底層對于類屬性、類方法、函數,訪問時都要先通過hashtable查找到對應的指針,再執行對應的操作。PHP7之前Zend引擎會有大量的CPU時間用于計算hash值。

實際上PHP程序運行起來之后,大部分情況下$key的值都是不變的。PHP7干脆將這個hash值保存起來,下次直接使用,這樣就節省了大量的hash計算操作,PHP的hashtable與C數組的性能一致。

三 hashtable桶內直接存數據

PHP5的hashtable每個元素都是一個 Bucket *,而PHP7直接存Bucket,減少了內存申請次數,提升了Cache命中率和內存訪問速度。

四 zend_parse_parameters改為宏實現

PHP的C擴展函數與PHP中的變量進行參數輸入時,要使用zend_parse_parameters()函數,這個函數根據一個字符串參數找到對應PHP的zval指針,然后進行賦值。 這個函數實際上有一定的性能消耗。

PHP7直接使用宏替換了zend_parse_parameters函數,C擴展中不再需要使用zend_parse_parameters進行逐個參數的查找,宏展開后自動會實現參數賦值。僅此一項就提升了5%的性能。

五 新增加4種OPCODE

很多PHP程序中會大量使用call_user_function, is_int/string/array,  strlen , defined 函數。PHP5 都是以擴展函數的方式提供,PHP7中這4類函數改成ZendVM的OPCODE指令,執行更快。

六 其他更多優化

除了上面5個主要優化點之外,PHP7還有其他更多的細節性能優化。

感謝各位的閱讀!看完上述內容,你們對php7優化了什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮北市| 青浦区| 遂溪县| 莲花县| 左权县| 油尖旺区| 和平县| 广南县| 高陵县| 桃江县| 根河市| 汝南县| 扶风县| 定日县| 玉树县| 邯郸市| 定兴县| 涞水县| 阿勒泰市| 林西县| 丰台区| 景谷| 昆明市| 岑溪市| 光山县| 高淳县| 阳原县| 鄂州市| 内丘县| 筠连县| 龙游县| 岳普湖县| 孝感市| 横峰县| 务川| 潼南县| 晋州市| 翁牛特旗| 独山县| 乡宁县| 大关县|