PHP5.5三種序列化效能對比_PHP教程

來源:互聯網
上載者:User

PHP5.5三種序列化效能對比


json_encode,serialize,igbinary三種序列化方式,在之前已經有過相關的測試,PHP5.5這方面的測試暫時沒有,這次測試基於PHP5.5,並且測試案例,
http://blog.csdn.net/hguisu/article/details/7651730
的測試案例是一樣的,只是從這個測試上家裡igbinary serialize的測試,作為對比,可以參考
http://www.ooso.net/archives/538

運行環境
PHP5.5 記憶體 16G 8核 2.0GMHz

效能&空間大小列表

採用小數組測試結果

json :156serialize :222igbinary_serialize :123json_encode :0.02264404296875json_decode :0.052916049957275serialize :0.031183004379272unserialize :0.029985904693604Igbinary Serialize: 0.024919986724854Igbinary unSerialize: 0.019716024398804

方便對比把之前PHP5.3的測試結果放到下面(之前並未測試igbinary)

json :156serialize :222json_encode :0.1087498664856json_decode :0.12652111053467serialize :0.041656017303467unserialize :0.040987968444824

採用大數組測試結果

json :5350serialize :8590igbinary_serialize :2432json_encode :0.92639899253845json_decode :1.8222811222076serialize :1.3030271530151unserialize :1.1492691040039Igbinary Serialize: 0.95630598068237Igbinary unSerialize: 0.82603001594543

下面是之前的結果(之前並未測試igbinary)

json :5350serialize :8590json_encode :0.90479207038879json_decode :1.753741979599serialize :1.3566699028015unserialize :1.3003630638123

小結:
資料方面:
1:升級到PHP5.5後,json,serialize,igbinary三種方式序列化後,大小沒有變化,說明這三種格式的對象結構沒有沒有變化,所以可以無縫升級。
2:佔用空間方面,igbinary節省空間的明顯優勢,比如在json一個數組5.4k大小的資料,serialize方式要8.6k,而使用igbinary方式,僅需2.4k,近乎為serialize方式的1/4。
效能方面
1:在小資料時,json和原生serialize的效能都比PHP5.3版本有所提升,而在處理大資料量時,效能又有所下降。
2:在序列化方面,json_encode的效能是最好的,其次是igbinary,兩者相差無幾,最差的為原生serialize,原生serialize效能消耗大概為json和igbinary方式的的1.4倍左右
3:在反序列方面igbinary的比序列化過程更快,當然也是最快的,但是這種快也是有成本代價的,參見最後的注意事項。
4:整體效能對比,整體效能是序列化和還原序列化之和,簡單對比會發現,json是最差的,次之是原生serialize,再好的為ibinary的方式。

綜合來說無論從序列化效能還是從佔用空間上來說,都是igbinary都是最優選擇。但是使用igbinary並非沒有代價,在測試中我們發現,調用igbinary_unserialize時,傳遞非法資料,會導致整個php進程死掉,日誌

child 19131 exited on signal 11 (SIGSEGV) after  1.844938 seconds from start 1.844938 seconds from start
估計是因為igbinary為了提升效能,在unserialize時,沒有做相關格式驗證,導致整個進程異常退出。在使用Redis時,我們先期使用SERIALIZE_PHP方式序列化,為了提升效能,減少對Redis空間的浪費採用igbinary_serialize方式,再切換的時候不小心踩到這個坑,導致伺服器響應出錯,直接502,幸虧在daily環境上。

http://www.bkjia.com/PHPjc/931650.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/931650.htmlTechArticlePHP5.5三種序列化效能對比 json_encode,serialize,igbinary三種序列化方式,在之前已經有過相關的測試,PHP5.5這方面的測試暫時沒有,這次測試...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.