igbinary vs serialize vs json_encode
来源:互联网 发布:网络污词大全 编辑:程序博客网 时间:2024/05/01 17:41
http://www.ooso.net/archives/538
最近看到memcached扩展支持额外的序列化方式 — igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法:
- igbinary_serialize
- igbinary_unserialize
据称可以用它来代替php自带的序列化函数serialize,性能更好,而且占用的字节数也更少。下面我就 igbinary ,serialize ,json_encode三者的性能做了一个简单的测试。
测试
以一个包含1000000个元素的数组做为原始数据,分别以json, serialize, igbinary进行序列化和反向操作。
<?phpini_set('memory_limit', '512m');$array = array_fill(0, 1000000, rand(1, 9999));$start = microtime(true);$export = json_encode($array);$end = microtime(true);$duration = $end - $start;print('JSON Encode: ' . $duration . PHP_EOL);$start = microtime(true);$import = json_decode($export);$end = microtime(true);$duration = $end - $start;print('JSON Decode: ' . $duration . PHP_EOL);$start = microtime(true);$export = serialize($array);$end = microtime(true);$duration = $end - $start;print('Serialize: ' . $duration . PHP_EOL);$start = microtime(true);$import = unserialize($export);$end = microtime(true);$duration = $end - $start;print('Serialize: ' . $duration . PHP_EOL);$start = microtime(true);$export = igbinary_serialize($array);$end = microtime(true);$duration = $end - $start;print('Igbinary Serialize: ' . $duration . PHP_EOL);$start = microtime(true);$import = igbinary_unserialize($export);$end = microtime(true);$duration = $end - $start;print('Igbinary Serialize: ' . $duration . PHP_EOL);?>
测试结果
JSON Encode: 0.084825992584229
JSON Decode: 0.34976410865784
Serialize: 0.38241410255432
Serialize: 7.7904229164124
Igbinary Serialize: 0.046916007995605
Igbinary Serialize: 0.23396801948547
从测试结果来看,速度方面优先级排列为 igbinary > json > serialize。同时我们也可以看到,php原生的serialize在对大对象进行反向操作时,速度真是掉队一大截了。
占用字节数对比
- json: 5000001
- serialize: 15888902
- igbinary: 7868681
在没有中文字符的情况下,json胜出,igbinary次之,serialize又被甩了几条街。
一图顶千言
柱状图越矮小的性能越好
0 0
- igbinary vs serialize vs json_encode
- igbinary vs serialize vs json_encode
- igbinary 与 php serialize 与 json_encode比较
- Igbinary
- json_encode 和 serialize(一)
- json_encode和serialize(二)
- > VS >
- VS
- vs
- vs
- &&VS&
- VS
- vs
- VS
- VS
- Android笔记 Android艺术探索笔记 Pacel VS Serialize Demo
- 序列化:json_encode/json_decode 与 serialize/unserialize
- php serialize json_encode 序列化性能测试
- 一次非常有意思的SQL优化经历
- 高通发布两款物联网旗舰WiFi芯片
- 关于AS集成ndk的问题总结
- 第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
- 黑马程序员-----IO流
- igbinary vs serialize vs json_encode
- SPI总线协议及SPI时序图详解
- 2015-5-15笔记汇总
- iOS开发经验之多个UIImageView 加载高清大图时内存管理
- PBOC/EMV-交易流程详解--POS与卡片的数据交互进行分析
- ios学习(二) 下拉刷新特效EGOTableViewPullRefresh
- R语言中 mode(),typeof() 的区别
- 【IOS】IOS开发问题解决方法索引(三)
- 广东工资指导价