最近看到memcached扩展支持额外的序列化方式 —igbinary,这是一个未收录到pecl的php扩展,它提供的两个主要方法:

  • igbinary_serialize

  • igbinary_unserialize

据称可以用它来代替php自带的序列化函数serialize,性能更好,而且占用的字节数也更少。下面我就 igbinary ,serialize ,json_encode三者的性能做了一个简单的测试。

测试

以一个包含1000000个元素的数组做为原始数据,分别以json, serialize, igbinary进行序列化和反向操作。

<?php
ini_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.076992034912109
JSON Decode: 0.47485995292664
Serialize: 0.42043685913086
Serialize: 0.27616095542908
Igbinary Serialize: 0.049700975418091
Igbinary Serialize: 0.22004795074463

从测试结果来看,速度方面优先级排列为 igbinary > json > serialize。同时我们也可以看到,php原生的serialize在对大对象进行反向操作时,速度真是掉队一大截了。

占用字节数对比

  • json: 5000001

  • serialize: 15888902

  • igbinary: 7868681

转载于:https://blog.51cto.com/zunfengke/1407474

igbinary vs serialize vs json_encode相关推荐

  1. PHP的serialize与json_encode

    对比 JSON优势:变量序列化后依然可读,可以给其他系统使用,因为JSON格式是标准的 JSON劣势: 只对UFT-8的数据有效,其他编码可能不能很好工作 只对stdClass类的示例有效,对于私有属 ...

  2. php serialize和json_encode哪个更快_世界 10 大编程语言,Java 不是第一,PHP 才第五...

    来源:toutiao.com/a6764554659349676557/ 如果你是软件开发领域的新手,那么你会想到的第一个问题是"如何开始?"编程语言有数百种可供选择,但是你怎么发 ...

  3. php serialize和json_encode哪个更快_学习PHP的10个技巧

    在开始学习PHP之前,花一些时间计划学习语言的方法可能是明智的. 学习过PHP的专业开发人员已经花费了大量时间来学习他们的技术.要模拟它们,您将需要确保有动力去做,并且理想地能够快速有效地学习PHP. ...

  4. php json_decode 效率,浅析PHP中json_encode、json_decode与serialize、unserialize的性能测试...

    今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何? 于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之 ...

  5. PHP serialize JSON 解析

    对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Program ...

  6. java php serialize_PHP serialize 和 JSON 解析与区别

    PHP serialize 和 JSON 解析与区别 对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器 ...

  7. java php serialize_PHP serialize JSON 解析

    对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Program ...

  8. PHP5.5四种序列化性能对比

    2019独角兽企业重金招聘Python工程师标准>>> 结论: 1.小数组用msgpack,无论空间和性能都最好 2.大数组,考虑空间用igbinary,考虑性能用msgpack j ...

  9. php中系统函数的特征,php 常用的系统函数

    字符串函数 strlen:获取字符串长度,字节长度 substr_count 某字符串出现的次数 substr:字符串截取,获取字符串(按照字节进行截取) mb_strlen mb_substr st ...

最新文章

  1. 06 Scratch等级考试(一级)模拟题
  2. commons-collections使用介绍之Bag HashBag
  3. linux进程中对信号的屏蔽,linux进程中的信号屏蔽
  4. Leet Code OJ 169. Majority Element [Difficulty: Easy]
  5. python 支持向量机预测结果相同_Python机器学习算法 — 支持向量机(SVM)
  6. 将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)
  7. volatile的适用场景
  8. minix中atoi、atol、atof的实现
  9. 【OpenCV 例程200篇】73. 二维连续傅里叶变换
  10. 在Wireshark中过滤数据包
  11. css学习_css用户界面样式
  12. 团体程序设计天梯赛-练习集-L1-046. 整除光棍
  13. 技术实践如何支持演进式架构和持续集成
  14. 大神u盘工具(win10PE)UEFI纯净版启动盘制作工具
  15. 浅谈地下污水处理厂电气特点和能效管理系统的实际应用
  16. vs2015编译vtk
  17. 移动地图应用普及给企业带来的利益
  18. 平面设计中的抠图技法与修图思路
  19. 两个分数化简比怎么化_两个分数的比化简怎么化急用
  20. 程序员辛酸泪——当程序员老去,程序员又何去何从

热门文章

  1. 从观望到行动:全球工业物联网市场生态全景观察
  2. 装配式建筑连入自动驾驶技术,未来城市的房子居然是这个样子......
  3. 亚马逊:从零售商向科技公司的质变
  4. 汽车行业最大创新仍未到来,四大力量将重塑未来汽车新纪元
  5. 《Science》评选2017年十大科学突破,看看有哪些吧!
  6. 为何 Windows 10X 无法延续 Windows 的成功?
  7. 年薪超 1400 万美元!苹果 CEO 库克去年薪酬大曝光!
  8. 用 Python 画自画像?看完我笑了
  9. 奔溃啦~有什么软件适合 Java 程序编写? | 每日趣闻
  10. 童心制物(Makeblock)受邀参加2020年韩国机器人世界展览会,倡导以先进的STEAM教育培养未来复合型人才