論證一:http://bbs.csdn.net/topics/390984122?page=1php
論證二:http://blog.csdn.net/fdipzone/article/details/43679337json
總結: serialize比json快一點,可是代碼量也大,而json簡單,若你json數據大的話,建議用serialize,小數據存儲讀取用json便可。看我的所好。測試
回覆於: 2015-02-08 10:04:55編碼
正好遇到這個項目幫你測試了一下,測試過程以下:
三種形式事先存放各自序列化好的相同的數據10萬個文本準備讀取:
explode 大小:661Mb 佔用空間:779Mb
serialize 大小:787Mb 佔用空間:1.01Gb
json 大小:882Mb 佔用空間:1.09Gb
第一輪測試:
explode: 82.351449966431 秒
serialize:65.974032878876 秒
json :82.163902997971 秒
第二輪測試:
explode: 101.51485490799 秒 內存使用:11200Kb
serialize:55.088683843613 秒 內存使用:11188Kb
json :52.850549936295 秒
第三輪測試:
explode: 36.264735937119 秒 內存使用:11200Kb
serialize:36.270735025406 秒 內存使用:11196Kb
json :75.997661828995 秒 內存使用:11252Kb
第四輪測試:
explode: 98.666929006577 秒 cpu:9% 內存使用:11196Kb
serialize:61.406966924667 秒 cpu:13% 內存使用:11192Kb
json :73.898298025131 秒 cpu:16% 內存使用:11248Kbspa
每天在用,還真的沒想過這問題,寫了個腳本粗淺測試.net
<?php function prt($str) { echo $str . '<br />'; } function get_time() { return time() + microtime(); } $ex = '#PAGE#'; $times = 1000; $body = array( 'content1' => '公司概況公司概況公司概況公司概況公司概況公司概況公司概況公司概況公司概況公司概況', 'content2' => '公司歷史公司歷史公司歷史公司歷史公司歷史公司歷史公司歷史公司歷史公司歷史公司歷史', 'content3' => '公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情', ); $data = array( array('name' => 'explode', 'encode' => function($arr){ return implode($ex, $arr); }, 'decode' => function($str){ return explode($ex, $str); }), array('name' => 'json', 'encode' => function($arr){ return json_encode($arr); }, 'decode' => function($str){ return json_decode($str, true); }), array('name' => 'serialize', 'encode' => function($arr){ return serialize($arr); }, 'decode' => function($str){ return unserialize($str); }), ); prt('字符串長度:'); foreach ($data as &$row) { $row['content'] = $row['encode']($body); $row['length'] = strlen($row['content']); prt($row['name'] . ':' . $row['length']); } unset($row); prt(''); prt('編碼' . $times .'次的時間:'); $start = get_time(); $a = array(); foreach ($data as &$row) { for($i=0; $i<$times; $i++){ $a = $row['encode']($body); } $end = get_time(); prt($row['name'] . ':' . ($end - $start)); $start = $end; } prt(''); prt('解碼' . $times .'次的時間:'); $start = get_time(); $a = ''; foreach ($data as &$row) { for($i=0; $i<$times; $i++){ $a = $row['decode']($row['content']); } $end = get_time(); prt($row['name'] . ':' . ($end - $start)); $start = $end; }
字符串長度:
explode:360
json:763
serialize:438
編碼1000次的時間:
explode:1.0800619125366
json:0.017001152038574
serialize:0.015001058578491
解碼1000次的時間:
explode:2.461140871048
json:0.025001049041748
serialize:0.01400089263916
serialize勝出code