igbinary 与 php serialize 与 json_encode比较
来源:互联网 发布:淘宝可以用花呗吗 编辑:程序博客网 时间:2024/05/21 17:35
最近看到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又被甩了几条街。
一图顶千言
柱状图越矮小的性能越好
- igbinary 与 php serialize 与 json_encode比较
- igbinary vs serialize vs json_encode
- igbinary vs serialize vs json_encode
- 序列化:json_encode/json_decode 与 serialize/unserialize
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php serialize与unserialize函数
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- php函数serialize()与unserialize()
- Twitter Storm开篇之作
- Web开发必备的43款可视化工具
- ZBarSDK支持armv7s
- C# Windows 服务安装并运行服务
- 微博翻页功能
- igbinary 与 php serialize 与 json_encode比较
- libsvm使用中的参数问题(选择最优参数)
- Java synchronized详解
- 转载一篇ClickOnce的文章!
- Web搜索中的用户意图的自动识别
- github添加fork的别人的仓库
- Linux环境变量的修改(永久,暂时)
- MyEclipse快捷键及经验总结
- JS 立即执行的函数表达式(function)写法