性能比较
同一个变量编码或解码10000次,每个函数执行10000次所需时间
php5.2.13
json : 190
serialize : 257
json_encode : 0.08364200592041
json_decode : 0.18004894256592
serialize : 0.063642024993896
unserialize : 0.086990833282471
DONE.
时间
json_decode两倍于unserialize
php5.3.2
json : 190
serialize : 257
json_encode : 0.062805891036987
json_decode : 0.14239192008972
serialize : 0.048481941223145
unserialize : 0.05927300453186
DONE.
json_decode两倍于unserialize
总之 unserialize 解码速度要更快,在做缓存,编码频繁解码的情况下使用会有更好的效率。
测试代码如下
<?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); //json_encode编码 $seri = serialize($target); //serialize序列化 echo "json :\t\t" . strlen($json) . "\r\n"; //json_encode后字符串长度 echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; //serialize序列化长度 //---------------------------------- json_encode $stime = microtime(true); //起始微秒 for ($i = 0; $i < 10000; $i ++){ //10000次 json_encode($target); } $etime = microtime(true); //终止微秒 echo "json_encode :\t" . ($etime - $stime) . "\r\n"; //运行时间 //---------------------------------- json_decode $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"; //---------------------------------- serialize $stime = microtime(true); for ($i = 0; $i < 10000; $i ++){ serialize($target); } $etime = microtime(true); echo "serialize :\t" . ($etime - $stime) . "\r\n"; //---------------------------------- unserialize $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.'; ?>
json : 190
serialize : 257
json_encode : 0.052663087844849
json_decode : 0.068554162979126
serialize : 0.023483037948608
unserialize : 0.031199216842651
DONE.