對php implode/explode, serialize, json, msgpack 之間效能的解說

jacklove
發布: 2023-03-31 08:02:02
原創
1929 人瀏覽過

php implode/explode, serialize, json, msgpack 效能比較

首先使用implode, serialize, json_encode, msgpack_packimplode, serialize, json_encode, msgpack_pack

#建立四個文字文件,用於測試。

建立程式碼如下:


 '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); echo file_put_contents('implode.txt', implode(',',$arr), true).'
'; echo file_put_contents('serialize.txt', serialize($arr), true).'
'; echo file_put_contents('json.txt', json_encode($arr), true).'
'; echo file_put_contents('msgpack.txt', msgpack_pack($arr), true); ?>
登入後複製

#建立後產生



implode.txt 92位元組
serialize.txt 165位元組
json.txt 223位元組

msgpack.txt 121位元組

##所產生的字串大小排序如下implode < msgpack_pack < serialize < json_encode

如果陣列簡單,則json_encode有可能比serialize小

例如:

$arr = array('一','二','三','四','五','六','七','八','九','十');
登入後複製
serialize 為147位元組

json_encode 為91位元組

#比較implode, serialize, json_encode, msgpack_pack 效能

 '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); $start = microtime(true); $i = 1000000; while($i>0){ // 分别测试运行时间及内存使用情况 $tmp = implode(',',$arr); // $tmp = serialize($arr); // $tmp = json_encode($arr); // $tmp = msgpack_pack($arr); $i--; } $end = microtime(true); echo 'run time:'.($end-$start).'s
'; echo 'memory usage:'.(memory_get_usage()/1024).'KB'; ?>
登入後複製
implode 1.3225722312927s 628.50KB serialize 2.0553789138794s 628.32KB json_encode 2.5058920383453s 628.34KB msgpack_pack 1.6431028842926s 628.24KB
登入後複製
#結果:記憶體使用量差不多,運行時間 implode < msgpack_pack < serialize < json_encode

比較explode, unserialize, json_decode , msgpack_unpack 效能

0){ $tmp = explode(',',$data); //$tmp = unserialize($data); //$tmp = json_decode($data, true); //$tmp = msgpack_unpack($data); $i--; } $end = microtime(true); echo 'run time:'.($end-$start).'s
'; echo 'memory usage:'.(memory_get_usage()/1024).'KB'; ?>
登入後複製
explode 1.7446749210358s 628.74KB unserialize 2.1386790275574s 628.67KB json_decode 5.2423169612885s 628.84KB msgpack_unpack 2.2290098667145s 628.63KB
登入後複製
結果:記憶體使用量差不多,運行時間explode < serialize < msgpack_unpack < json_decode

總結,由於implode/explode不適合使用複雜的結構,因此常用的為serialize,json,msgpack三種。

而三個比較,運行速度,記憶體佔用,空間佔用最優為msgpack, 其次是serialize,最後是json。

如有條件,建議使用msgpack序列化處理資料

關於msgpack 可以查看我之前寫的文章:《MessagePack 序列化格式》

本文對php implode/explode, serialize, json , msgpack 之間效能進行比較,更多相關內容請關注php中文網。

相關推薦:

php str_replace 取代指定次數方法的解說

關於header,headers_sent,headers_list,header_remove 使用說明

透過PDO 查詢mysql傳回欄位整數變成String型的解決方法

####

以上是對php implode/explode, serialize, json, msgpack 之間效能的解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!