php序列化 与json_PHP中serializen()与json_encode()的性能差异
結論
serializen的效率遠高于json,特別是在反序列化方面。
實地測試
對同一個巨大數組分別進行10000次序列化和反序列化,得到如下測試結果:測試環境
CPU: Intel i5-3317U
PHP: 7.0.12
SRV: Apache 2json_encode 2.7458431720734 s
json_decode 7.1210720539093 s
serialize 1.899829864502 s
unserialize 0.033617973327637 s
測試代碼<?php
$de=[
"ok"=>23421344234,
"d3"=>['32af','23rdsf','fa3fawe','r23dsds'],
'asdfasfd'=>['sadfasdf','asdfdsf'=>'asdfa愛的色放撒地方發生但凡sfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfasfd1'=>['sadfa安撫仨人貨幣補償現在vcxzvcxzsdf','asg發多少了空間dfdsf'=>'asdfasfdsdfsfa','asdf愛居兔肉色很尷尬人個人sadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfasfd2'=>['sadfasdf','asdfdsf'=>'asdfasfds阿斯頓發生dfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfasfd3'=>['sadf愛迪生范德薩發放第三asdf','asdfdsf'=>'asdfasfd阿薩德發的順豐sdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfasfd4'=>['sadfasdf','asdfdsf'=>'asdfasfdsd阿什頓發發生的fsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfahgewrasfd'=>['sadfasdf','asdfdsf'=>'asdfa阿什頓發斯蒂芬sfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdffsadasfd'=>['sadfasdf','asdfdsf'=>'asdfasfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdaefdssfasfd'=>['sadfasdf','asdf阿斯頓發發生的dsf'=>'asdfasfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfa阿斯頓發發呆爽膚水對方43wefrasfd'=>['sadfasdf','asdfdsf'=>'asdfasfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'as阿斯蒂芬范德薩范德薩dfsdaf']],
'asdfaasdfsfd'=>['sadfasdf','asdfdsf'=>'asdfasfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'afasdfsdfasfd'=>['sadfasdf','asdfdsf'=>'asdfas阿斯頓發發生的分fdsdfsfa','as愛的色放范德薩dfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
'asdfas阿什頓發斯蒂芬法第三asdfsdffd'=>['sadfasdf','asdfdsf'=>'asdfasfdsdfsfa','asdfsadf'=>['asdfasdf',234234234,'asdfsdaf']],
array (
'battle_id'=> 257
,'user_id'=> 41248
,'user阿什頓發斯蒂芬多撒_id2'=> 23989
,'player'=> 41248
,'formation'=> Array
(
'41248'=> 1
,'23989'=> 2
)
,'result'=> 1
,'battle_type'=> 1
,'speed'=> Array
(
'41248'=> 0
,'23989'=> 0
)
)
];
$de=[
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
$de,
];
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
$en=json_encode($de);
}
$etime = microtime(true);
echo "json_encode :", ($etime - $stime) ,'
';
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
$de=json_decode($en);
}
$etime = microtime(true);
echo "json_decode :", ($etime - $stime) ,'
';
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
$en=serialize($de);
}
$etime = microtime(true);
echo "serialize :", ($etime - $stime) ,'
';
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++) {
$de=serialize($en);
}
$etime = microtime(true);
echo "unserialize :", ($etime - $stime) ,'
';
總結
以上是生活随笔為你收集整理的php序列化 与json_PHP中serializen()与json_encode()的性能差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php地图打点,php – 点击地图后获
- 下一篇: webuploader 实现图片批量上传