php implode/explode、serialize、json、msgpack のパフォーマンス比較
最初に使用implode、serialize、json_encode、msgpack_packテスト用に 4 つのテキスト ファイルを作成します。
作成コードは次のとおりです:
<?php $arr = array( 'content1' => '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); echo file_put_contents('implode.txt', implode(',',$arr), true).'<br>'; echo file_put_contents('serialize.txt', serialize($arr), true).'<br>'; echo file_put_contents('json.txt', json_encode($arr), true).'<br>'; echo file_put_contents('msgpack.txt', msgpack_pack($arr), true); ?>
作成後に生成
implode.txt 92 バイト
serialize.txt 165 バイト
json.txt 223 バイト
msgpack.txt 121 バイト
生成される文字列のサイズ 順序は次のとおりですimplode
配列が単純な場合、json_encode は seriesize よりも小さい可能性があります。
例:
$arr = array('一','二','三','四','五','六','七','八','九','十');
serialize は 147 バイト
##json_encode は 91 バイト<?php $arr = array( 'content1' => '一二三四五六七八九十', '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<br>'; 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 < シリアライズ < json_encode##explode、unserialize、msgpack_unpack のパフォーマンスの比較
<?php $data = file_get_contents('implode.txt'); //$data = file_get_contents('serialize.txt'); //$data = file_get_contents('json.txt'); //$data = file_get_contents('msgpack.txt'); $start = microtime(true); $i = 1000000; while($i>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<br>'; 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
要約すると、implode/explode は複雑な構造の使用には適していないため、serialize、json、msgpack が一般的に使用されます。 3 つの比較のうち、最適な実行速度、メモリ使用量、スペース使用量は msgpack、次にシリアライズ、最後に json です。
条件が許せば、
msgpack を使用してデータをシリアル化することをお勧めします。
msgpack については、以前に書いた記事「MessagePack Serialization Format」をご覧ください。この記事では、php の implode/explode について説明します。パフォーマンスを比較するには、serialize、json、msgpack を使用してください。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。
#関連推奨事項:
php str_replace 指定回数置換する方法の説明
##header、headers_sent、headers_list、header_remove の手順について
PDO を介して mysql によって返されるフィールドの整数型を変更する解決策文字列型へ
以上がphp implode/explode、serialize、json、msgpack間のパフォーマンスの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。