色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PHP7在內存方面你是否知道都進行了哪些優化

冬至配餃子 ? 來源:開發內功修煉 ? 作者:張彥飛allen ? 2022-08-30 17:08 ? 次閱讀

前面我們討論了內存的工作原理,也進行了一些性能相關的測試。那么今天開始我們來看幾個在實踐中的應用。首先我們先從PHP開始。2015年,PHP7的發布可以說是在技術圈里引起了不小的轟動,因為它的執行效率比PHP5直接翻了一倍。PHP7在內存方面,你是否知道作者都進行了哪些優化?幾個核心結構體的改進只是表面上看起來優化的幾個字節那么簡單?讓我們從幾個核心的數據結構改進開始看起。

1 PHP7zval的變化

1、php5.3中的zval:

pYYBAGMN0taADI7ZAACph_e53O8634.png

我們這里只討論64位操作系統下的情況。該zval_struct結構體中的由四個成員構成,其中zvalue_value稍微復雜一些,是一個聯合體。聯合體中最長的成員是一個指針加一個int,8+4=12字節。但是默認情況下,會進行內存對齊,故zval_struct會占用16字節。那么。

_zval_struct總的字節 = value(16)+ refcount__gc(4)+ type(1)+ is_ref__gc(1)= 占用22字節。

最后再考慮下內存對齊,實際占用24字節。(如果算的有點暈話,感興趣的同學可以寫段簡單的測試代碼,使用sizeof查看一下)

2、PHP7.2中的zval

poYBAGMN0uyAUol1AADs2EZskZs450.png

7.2中的zval_struct結構體里由3個成員構成,其中zend_value看起來比較復雜,實際上只是一個8字節的聯合體。u1也是一個聯合體,占用是4個字節。u2也一樣。這樣zval_struct就實際占用16個字節。

2 PHP7 HashTable的變化

1、PHP5.3里的HashTable:

pYYBAGMN0v-AGU2NAACNlGKBu8M639.png

在5.3里HashTable就是一個大struct, 有點小復雜,我們拆開了細說,

uint nTableSize 4字節

uint nTableMask 4字節

uint nNumOfElements 4字節,

ulong nNextFreeElement 8字節 注意這前面的4個字節會被浪費掉,因為nNextFreeElement的開始地址需要對齊

Bucket *pInternalPointer 8字節

Bucket *pListHead 8字節

Bucket *pListTail 8字節

Bucket **arBuckets 8字節

dtor_func_t pDestructor 8字節

zend_bool persistent 1字節

unsigned char nApplyCoun 1字節

zend_bool bApplyProtection 1字節

最終,總字節數 = 4+4+4+4(nNextFreeElement前面這四個字節會留空)+8+8+8+8+8+8+1+1+1 = 67字節。再加上結構體本身要對齊到8的整數倍,所以實際占用72字節。

2、PHP7.2里的HashTable:

pYYBAGMN0xKAQDrkAACWEr2NQKE768.png

在7.2里HashTable

zend_refcounted_h gc 看起來唬人,實際就是個long,占用8字節

union... u 占用4字節

uint32_t 占用4字節

Bucket* 指針占用8字節

uint32_t nNumUsed 占用4字節

uint32_t nNumOfElements 占用4字節

uint32_t nTableSize 占用4字節

uint32_t nInternalPointer 占用4字節

zend_long nNextFreeElement 占用8字節

dtor_func_t pDestructor 占用8字節

總占用

字節數 = 8+4+4+8+4+4+4+4+8+8 = 56字節,并且正好達到了內存對齊的狀態,沒有額外的浪費。

另外還有PHP源代碼里經常出鏡的Buckets也從72下降到了32字節,這里我就不翻源代碼了。

3 優化思想精髓

當當當,敲黑板,重點來了!我們看了兩個核心數據結構的結構體變化,這上面的優化都是什么含義呢?拿HashTable舉例,貌似從72字節優化到了56字節,這內存節約的也不是特別多嘛,才20%多而已!但這中間其實隱藏了兩個較深層次優化思路:

第一、你是否記得我們前面CPU在向內存要數據的時候是以Cache Line為單位進行的,而我們說過Cache Line的大小就是64字節。回過頭來看HashTable,在7.2里的56字節,只需要CPU向內存進行一次Cache Line大小的burst IO,就夠了。而在5.3里的72字節,雖然只比Cache Line大了那么一丟丟,但是對不起,必須得進行兩次burst IO才可以。所以,在計算機里,56字節相對72字節實際上是翻倍的性能提升!!

第二、CPU的L1、L2、L3的容量是固定的幾十K或者幾十M。假設Cache的都是HashTable,那么Cache容量不變的條件下,能Cache住的HashTable將會翻倍,緩存命中率提升一大截。要知道L1命中后只需要1ns多一點的耗時,而如果穿透到內存的話可能就需要40多納秒的延時了,整整差了幾十倍。

所以PHP內核的作者大牛深諳CPU與內存的工作原理,表面上看起來只是幾個字節的節約,但是實際上爆發出了巨大的性能提升!!



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10901

    瀏覽量

    212639
  • 內存
    +關注

    關注

    8

    文章

    3048

    瀏覽量

    74209
  • 操作系統
    +關注

    關注

    37

    文章

    6882

    瀏覽量

    123581
  • PHP
    PHP
    +關注

    關注

    0

    文章

    454

    瀏覽量

    26738
收藏 人收藏

    評論

    相關推薦

    高壓SiC針對電動汽車長途卡車運輸中的兆瓦級充電進行了優化

    電子發燒友網站提供《高壓SiC針對電動汽車長途卡車運輸中的兆瓦級充電進行了優化.pdf》資料免費下載
    發表于 01-22 15:38 ?0次下載
    高壓SiC針對電動汽車長途卡車運輸中的兆瓦級充電<b class='flag-5'>進行了</b><b class='flag-5'>優化</b>

    FPGA通過SPI對DAC進行了配置,用頻譜儀測不到輸出是怎么回事?

    FPGA通過SPI對DAC進行了配置,確定配置時序正確,寫了組測試的單音數據,data,clk,frame發的都對,用頻譜儀測不到輸出,可能是哪些地方不對呢?求助大神
    發表于 12-09 06:35

    內存藍屏死機?內存驗貨指南值得擁有

    在內存領域,穩定性無疑是用戶最需要關注的指標。由于身負整機數據交換的重任,因此其品質極大程度上決定著使用過程中,是否會出現藍屏、死機等問題。本期我們將以墨云藏境系列DDR5 RGB國風內存為例,為
    的頭像 發表于 12-02 15:38 ?211次閱讀
    新<b class='flag-5'>內存</b>藍屏死機?<b class='flag-5'>內存</b>驗貨指南<b class='flag-5'>你</b>值得擁有

    如何優化RAM內存使用

    :使用任務管理器查看當前運行的程序和服務,關閉那些不需要的。 禁用啟動程序 :減少開機啟動項,只保留必要的程序。 2. 優化操作系統設置 調整虛擬內存 :合理設置虛擬內存,避免過多占用硬盤空間。 清理磁盤 :定期
    的頭像 發表于 11-11 09:58 ?511次閱讀

    這些電源常用仿真軟件,知道嗎?

    諧振變換器電路進行了仿真建模,感興趣的工程師們可以去回顧一下,這里就不贅述了。 常用仿真軟件 在進行電源設備設計仿真時,會涉及到電路、電磁、熱學、力學方面的仿真。 電路仿真: 通過仿真軟件將電路的元件
    發表于 10-25 14:20

    TLV320AIC3106IRGZT隨著PGA音量的抬高是不是同時將底噪也進行了放大?

    我的問題如下 1. 隨著PGA音量的抬高是不是同時將底噪也進行了放大? 2. 這樣的放大是不是芯片固有的現象?能否進一步降低頻譜底噪?
    發表于 10-24 06:15

    石墨烯基導電油墨具有良好的滲透性和低阻抗,針對 RFID天線性能進行了

    “電子絲網印刷技術”是指電子信息技術與具有歷史的絲網印刷技術相結合而產生的嶄新技術。Haydale這款石墨烯墨水除了優異的柔韌性、附著力和兼容性外,用于 RFID 產品還能夠傳輸和接收特定的無線電頻率,具有好的滲透性和低阻抗,針對 RFID天線性能進行了優化
    的頭像 發表于 09-13 15:26 ?448次閱讀
    石墨烯基導電油墨具有良好的滲透性和低阻抗,針對 RFID天線性能<b class='flag-5'>進行了</b>優

    mesh的內存占用能否優化

    余110kb可用。 請問,mesh的內存占用問題能否優化?為何系統剩余大概60K0內存以下的時候系統會因內存不足重啟?
    發表于 06-28 15:32

    ESP32S3的EEPROM是由FLASH虛擬的,直接在arduinoIDE中擦寫EEPROM時是否在底層自動進行了磨損平衡?

    ESP32S3的EEPROM是由FLASH虛擬的,請問直接在arduinoIDE中擦寫EEPROM時是否在底層自動進行了磨損平衡? 在用ESP32S3做含有計數器功能的設備,希望可以掉電保存數據
    發表于 06-07 06:27

    是否真的了解結構體占用了多少字節?

    結構體成員所占內存空間大小一般情況下,如果想知道結構體成員的內存占用情況需要:1、先用結構體在內存中開空間2、使用sizeof(結構體變量.成員名)或者sizeof(結構體指針->成員
    的頭像 發表于 06-04 08:04 ?551次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>是否</b>真的了解結構體占用了多少字節?

    云服務器apache如何配置解析php文件?

    在云服務器上配置Apache以解析PHP文件通常需要以下步驟: 1、安裝PHP:首先確保在服務器上安裝了PHP可以使用包管理工具(如apt、yum等)來安裝
    的頭像 發表于 04-22 17:27 ?1050次閱讀

    針對功率密度和低EMI進行了優化的LM62460、LM61480和LM61495引腳兼容6A/8A/10A降壓轉換器數據表

    電子發燒友網站提供《針對功率密度和低EMI進行了優化的LM62460、LM61480和LM61495引腳兼容6A/8A/10A降壓轉換器數據表.pdf》資料免費下載
    發表于 04-11 09:55 ?0次下載
    針對功率密度和低EMI<b class='flag-5'>進行了</b><b class='flag-5'>優化</b>的LM62460、LM61480和LM61495引腳兼容6A/8A/10A降壓轉換器數據表

    什么是HBM3E內存?Rambus HBM3E/3內存控制器內核

    Rambus HBM3E/3 內存控制器內核針對高帶寬和低延遲進行了優化,以緊湊的外形和高能效的封裝為人工智能訓練提供了最大的性能和靈活性。
    發表于 03-20 14:12 ?2711次閱讀
    什么是HBM3E<b class='flag-5'>內存</b>?Rambus HBM3E/3<b class='flag-5'>內存</b>控制器內核

    使用STM32H7的AD進行了7M頻率的采集信號,采集進去后可以實現實時處理嗎?

    使用STM32H7的AD進行了7M頻率的采集信號,采集進去后可以實現實時處理嗎?
    發表于 03-08 08:10

    數組和鏈表在內存中的區別 數組和鏈表的優缺點

    數組和鏈表在內存中的區別 數組和鏈表的優缺點? 數組和鏈表是常見的數據結構,用于組織和存儲數據。它們在內存中的存儲方式以及優缺點方面存在一些顯著的差異。本文將詳細探討這些差異以及它們的優缺點。 1.
    的頭像 發表于 02-21 11:30 ?1108次閱讀
    主站蜘蛛池模板: 国产欧美无码亚洲| 亚洲AV福利天堂一区二区三 | 亚州综人网| aaaaaa级特色特黄的毛片| 国产免费网站看v片在线| 欧美日韩中文国产一区| 亚洲午夜久久影院| 国产成人免费片在线观看| 男女一边摸一边做羞羞的事情免费 | 国产精品第十页| 女人精69xxxxx舒心| 一本大道无码AV天堂欧美| 国产成人啪精品视频免费网| 老阿姨才是最有V味的直播| 乡村教师电影完整版在线观看| 91久久综合精品国产丝袜长腿| 国产亚洲精品在浅麻豆| 肉肉描写很细致的黄文| 99免费在线| 乱淫67194| 一级做a爰片久久免费| 国产精品久久人妻无码蜜 | 九九热久久只有精品2| 脱jk裙的美女露小内内无遮挡| 99久女女精品视频在线观看| 口内射精颜射极品合集| 伊人精品久久久大香线蕉99| 国产亚洲视频在线| 亚洲mv在线观看| 国产精品一库二库三库| 外国三级片名| 国产精品av| 午夜伦伦电影理论片大片| 国产69精品久久久久APP下载| 青青久久国产| GAY空少被体育生开菊| 欧美一级做a爰片免费| 97无码欧美熟妇人妻蜜| 免费A级毛片无码无遮挡| 97亚洲狠狠色综合久久位| 男人被绑着强行摸j|