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這方面的測試暫時沒有,這次測試...