详解php中implode explode serialize json msgpack性能对比
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-22 10:09:32 浏览: 评论:0
这篇文章主要介绍了php中implode/explode、serialize、json、 msgpack性能对比,对性能感兴趣的同学,可以参考下。
测试方法
首先使用implode, serialize, json_encode, msgpack_pack创建四个文本文件,用于测试。
创建代码如下:
- <?php
- $arr = array(
- 'content1' => '一二三四五六七八九十',
- 'content2' => '一二三四五六七八九十',
- 'content3' => '一二三四五六七八九十'
- );
- echo file_put_contents('implode.txt', implode(',',$arr), true).'<br>';
- echo file_put_contents('serialize.txt', serialize($arr), true).'<br>';
- echo file_put_contents('json.txt', json_encode($arr), true).'<br>';
- 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 性能
- <?php
- $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<br>';
- echo 'memory usage:'.(memory_get_usage()/1024).'KB';
- ?>
implode 1.3225722312927s 628.50KB
serialize 2.0553789138794s 628.32KB
json_encode 2.5058920383453s 628.34KB
结果:内存使用情况差不多,运行时间 implode < msgpack_pack < serialize < json_encode
比较 explode, unserialize, json_decode, msgpack_unpack 性能
- <?php
- $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<br>';
- echo 'memory usage:'.(memory_get_usage()/1024).'KB';
- ?>
explode 1.7446749210358s 628.74KB
unserialize 2.1386790275574s 628.67KB
json_decode 5.2423169612885s 628.84KB
结果:内存使用情况差不多,运行时间 explode < serialize < msgpack_unpack < json_decode
总结:
由于implode/explode不适合使用复杂的结构,因此常用的为serialize,json,msgpack三种。
而三种比较,运行速度,内存占用,空间占用最优为msgpack, 其次是serialize,最后是json。
如有条件,建议使用msgpack序列化处理数据。
Tags: implode explode serialize
- 上一篇:PHP json_encode中文乱码解决方法
- 下一篇:最后一页
相关文章
- ·php中json和serialize 性能比较测试(2015-04-15)
- ·php提示Notice:unserialize()[function.unserialize]:Error错误解决办法(2018-10-20)
- ·phpunit遇到You cannot serialize or unserialize PDO instances(2018-10-24)
- ·golang实现php里的serialize()和unserialize()序列和反序列方法详解(2018-11-18)
- ·php serialize()与unserialize() 不完全研究(2021-08-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)