php implode/explode, serialize, json, msgpack 性能对比由于implode/explode不适合使用复杂的结构,因此常用的为serialize,json,msgpack三种。而三种比较,运

php implode/explode, serialize, json, msgpack 性能对比

首先使用implode, serialize, json_encode, msgpack_pack创建四个文本文件,用于测试。

创建代码如下:

$arr = array(

'content1' => '一二三四五六七八九十',

'content2' => '一二三四五六七八九十',

'content3' => '一二三四五六七八九十'

);

echo file_put_contents('implode.txt', implode(',',$arr), true).'
';

echo file_put_contents('serialize.txt', serialize($arr), true).'
';

echo file_put_contents('json.txt', json_encode($arr), true).'
';

echo file_put_contents('msgpack.txt', msgpack_pack($arr), true);

?>

创建后生成

implode.txt    92字节

serialize.txt   165字节

json.txt          223字节

msgpack.txt  121字节

生成的字符串大小排序如下 implode < msgpack_pack < serialize < json_encode

如果数组简单,则json_encode有可能比serialize小

例如:

$arr = array('一','二','三','四','五','六','七','八','九','十');serialize   为147字节

json_encode 为91字节

比较 implode, serialize, json_encode, msgpack_pack 性能

$arr = array(

'content1' => '一二三四五六七八九十',

'content2' => '一二三四五六七八九十',

'content3' => '一二三四五六七八九十'

);

$start = microtime(true);

$i = 1000000;

while($i>0){

// 分别测试运行时间及内存使用情况

$tmp = implode(',',$arr);

// $tmp = serialize($arr);

// $tmp = json_encode($arr);

// $tmp = msgpack_pack($arr);

$i--;

}

$end = microtime(true);

echo 'run time:'.($end-$start).'s
';

echo 'memory usage:'.(memory_get_usage()/1024).'KB';

?>

implode

1.3225722312927s 628.50KB

serialize

2.0553789138794s 628.32KB

json_encode 2.5058920383453s 628.34KB

msgpack_pack 1.6431028842926s 628.24KB

结果:内存使用情况差不多,运行时间implode < msgpack_pack < serialize < json_encode

比较 explode, unserialize, json_decode, msgpack_unpack 性能

$data = file_get_contents('implode.txt');

//$data = file_get_contents('serialize.txt');

//$data = file_get_contents('json.txt');

//$data = file_get_contents('msgpack.txt');

$start = microtime(true);

$i = 1000000;

while($i>0){

$tmp = explode(',',$data);

//$tmp = unserialize($data);

//$tmp = json_decode($data, true);

//$tmp = msgpack_unpack($data);

$i--;

}

$end = microtime(true);

echo 'run time:'.($end-$start).'s
';

echo 'memory usage:'.(memory_get_usage()/1024).'KB';

?>

explode

1.7446749210358s 628.74KB

unserialize

2.1386790275574s 628.67KB

json_decode

5.2423169612885s 628.84KB

msgpack_unpack 2.2290098667145s 628.63KB

结果:内存使用情况差不多,运行时间 explode < serialize < msgpack_unpack < json_decode

总结,由于implode/explode不适合使用复杂的结构,因此常用的为serialize,json,msgpack三种。

而三种比较,运行速度,,内存占用,空间占用最优为msgpack, 其次是serialize,最后是json。

如有条件,建议使用msgpack序列化处理数据。

关于msgpack 可以查看我之前写的文章:《MessagePack 序列化格式》

php msgpack 性能,php implode/explode, serialize, json, msgpack 性能对比相关推荐

  1. Asp.net Web Api开发 性能:使用Jil提升Json序列化性能

    from:http://blog.csdn.net/sqqyq/article/details/51692342 看了几篇网上关于各种序列化工具的性能对比,在这里再粘贴下: 我们使用了ASP.NET ...

  2. Asp.net Web Api开发(第二篇)性能:使用Jil提升Json序列化性能

    看了几篇网上关于各种序列化工具的性能对比,在这里再粘贴下: 我们使用了ASP.NET WEB API来提供RESTfull风格的接口给APP调用,默认序列化库用的是:Newtonsoft.Json 为 ...

  3. 几种常用 JSON 库性能比较

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 原文:www.xncoding.com/2018/01/09/java/jsons.html ...

  4. JAVA中几种常用JSON库性能比较

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:飞污熊 xncoding.com/2018/01/09/java/jsons.html 本 ...

  5. gson json转map_Java几种常用JSON库性能比较

    点击上方"Java研发军团",选择"置顶公众号" 关键时刻,第一时间送达! 阅读本文需要5分钟 作者:飞污熊 xncoding.com/2018/01/09/j ...

  6. 绝了,几款主流的 JSON 库性能对比!

    本篇通过JMH(Oracle官方测试框架)来测试一下Java中几种常见的JSON解析库的性能.每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库.但是百闻不如一见,只有自己亲手测试过的才 ...

  7. Java 几种常用 JSON 库性能比较

    作者:熊能 原文地址:www.xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能.每次都在网上看到别人说什 ...

  8. json.parser性能_Jackson JSON Java Parser API示例教程

    json.parser性能 Jackson JSON Java Parser is very popular and used in Spring framework too. Java JSON P ...

  9. 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART)

    JsonPerformanceVS 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART) 文章目录 JsonPerformanceVS 前言 测试目的: Purp ...

最新文章

  1. vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
  2. linux扩充消息队列,Linux关于消息队列的使用分享
  3. 小米高管否认鸿蒙,小米参加华为鸿蒙系统实验?小米高管终于回应,网友评论炸了!...
  4. LibreOffice去重复数据
  5. php 生存分析,HPA数据库08.做生存分析
  6. 数模论文研读--------09年B题:眼科病床
  7. Android开发:setAlpha()方法
  8. Docker下部署oracle10g
  9. html+表格+左侧表头,HTML thead表格表头 标签
  10. Learning to ranking简介
  11. 易用、弹性、开放 — 云原生技术是数字时代的“水电煤”
  12. 东南亚痴狂诈骗的背后,意外暴露一个大型“围猎”程序员的现场
  13. hdu 1043 Eight 经典八数码问题
  14. 微信多开器 Python窗口编程 隔离运行(一)
  15. 刘振飞:互联网项目研发管理心得
  16. Socks5协议中文文档(RFC1928)
  17. 在PPT中插入FLASH遇到的系列问题
  18. UE特效--Spline蓝图--制作数字城市道路分析
  19. QStockView股票监测和分析方法
  20. 推荐一个很好用的在线文档翻译器:翻译狗

热门文章

  1. 阿里云服务器安全组如何配置?
  2. Lumus最新光波导模组:单目2K,PPD达60,亮度5000nit
  3. android tabhost 动画,Android中使用TabHost 与 Fragment 制作页面切换效果
  4. 机房空调数据采集监控解决方案
  5. 个人设计web前端大作业
  6. swift语言基础语法思维导图
  7. java案例--利用抽象类模拟加油站消费
  8. 专访5位技术人,探秘AI职业背后的故事
  9. 系统属性由于启动计算机时,win7系统开机弹出“系统属性,由于启动计算机时出现了页面文件配置问题”的解决方法...
  10. scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)...