PHP中json_encode、json_decode与serialize、unserialize的性能测试分析


Posted in PHP onJune 09, 2010

于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数。
据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。
于是我决定动手实验,证实一下同事所说的情况是否属实。
实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。
用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间。
以下是PHP 5.2.13环境其中一次测试结果:

json : 190 
serialize : 257 
json_encode : 0.08364200592041 
json_decode : 0.18004894256592 
serialize : 0.063642024993896 
unserialize : 0.086990833282471 
DONE.

以下是PHP 5.3.2环境其中一次测试结果:
json : 190 
serialize : 257 
json_encode : 0.062805891036987 
json_decode : 0.14239192008972 
serialize : 0.048481941223145 
unserialize : 0.05927300453186 
DONE.

这次实验得到的结论是:
json_encode和json_decode的效率并没有比serialize和unserialize的效率高,在反序列化的时候性能相差两倍左右,PHP 5.3执行效率比PHP 5.2略有提升。
以下是我用来做测试的代码:
<?php 
$target = array ( 
'name' => '全能头盔', 
'quality' => 'Blue', 
'ti_id' => 21302, 
'is_bind' => 1, 
'demand_conditions' => 
array ( 
'HeroLevel' => 1, 
), 
'quality_attr_sign' => 
array ( 
'HeroStrength' => 8, 
'HeroAgility' => 8, 
'HeroIntelligence' => 8, 
), 
); 
$json = json_encode($target); 
$seri = serialize($target); 
echo "json :\t\t" . strlen($json) . "\r\n"; 
echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_encode($target); 
} 
$etime = microtime(true); 
echo "json_encode :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_decode($json); 
} 
$etime = microtime(true); 
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
serialize($target); 
} 
$etime = microtime(true); 
echo "serialize :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
unserialize($seri); 
} 
$etime = microtime(true); 
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n"; 
echo 'DONE.'; 
?>
PHP 相关文章推荐
ADODB结合SMARTY使用~超级强
Nov 25 PHP
网友原创的PHP模板类代码
Sep 07 PHP
smarty的保留变量问题
Oct 23 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
php生成gif动画的方法
Nov 05 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP常见数组排序方法小结
Aug 20 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
php实现session共享的实例方法
Sep 19 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 #PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 #PHP
腾讯QQ php程序员面试题目整理
Jun 08 #PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 #PHP
php的字符串用法小结
Jun 08 #PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 #PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 #PHP
You might like
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
为数据添加append,remove功能
2006/10/03 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
Highcharts入门之简介
2016/08/02 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python 打印中文字符的三种方法
2018/08/14 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
基于python检查矩阵计算结果
2020/05/21 Python
环保倡议书
2014/04/14 职场文书
教师党员个人整改措施
2014/10/27 职场文书
家庭贫困证明
2015/06/16 职场文书
红楼梦读书笔记
2015/06/25 职场文书
总经理致辞
2015/07/29 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL