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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
MySql中正则表达式的使用方法描述
Jul 30 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
php通过header发送自定义数据方法
Jan 18 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 PHP
PHP实现计算器小功能
Aug 28 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
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
javascript常用对话框小集
2013/09/13 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
详解Swift中属性的声明与作用
2016/06/30 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
举例讲解Python装饰器
2020/12/24 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
优秀女职工事迹材料
2014/02/06 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
大学生求职计划书
2014/04/30 职场文书
中考标语大全
2014/06/05 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android
Linux中如何安装并部署Redis
2022/04/18 Servers