serializeとjson関数の比較
概要
serializeとjson_encodeのどちらの利用が望ましいかを調べます。理由はWebAPIを作成するときにどのレスポンス形式が最適なのかを検証する必要がでてきたためです。事前に上がった意見としては”json_encodeの方がデータ容量少なくなるから速いっしょ”、”serializeの方がphpをそのまま扱っているんだから変換処理コストが少ないはず”などの意見がありましたが、どれが正確か分からないので実際に試してみます。
サンプルするデータ
50回実行して処理時間の平均値をサンプリングします。
エンコード ソースコード
<?php $data = array(); for( $i=0; $i<=10000; $i ++ ) { $data[] = "test"; //ここを適宜変えます。 } $start = microtime(); //PHP serialize $string = serialize( $data ); //JSON encode //$string = json_encode( $data ); $end = microtime(); echo $end - $start . "\n";デコード ソースコード
<?php $data = array(); for( $i=0; $i<=10000; $i ++ ) { $data[] = "test"; //ここを適宜変えます。 } //PHP serialize $string = serialize( $data ); //JSON encode //$string = json_encode( $data ); $start = microtime(); $data = unserialize( $string ); //json_decode( $string ); $end = microtime(); echo $end - $start . "\n";
エンコードの処理時間結果
php配列からのエンコード処理ではjson_encodeが速い/span>
形式 シングルバイト マルチバイト serialize 0.00371922 0.0040066 json_encode 0.00123026 0.00314484
エンコードbyte数比較
php配列からのエンコード処理ではjson_encodeの方が生成Stringのバイト数が少なく済みそう
形式 シングルバイト マルチバイト serialize 178919 248926 json_encode 70008 230024