serialize/unserialize vs json_encode/json_decode 速度比較

テストデータとして 金沢市オープンデータ から取得した JSON 形式で 351 KB になるデータを使用した。PHP 5.4.17 (cli) でそれぞれ 1000 回実行したときの実行時間を以下に示す。

エンコード

実行時間 [s]
serialize (array) 2.06 +26%
serialize (stdClass) 2.06 +26%
json_encode (array) 1.58 -
json_encode (stdClass) 1.58 -

配列でも stdClass でも速度は変わらない。

デコード

実行時間 [s]
unserialize (array) 3.84 +3%
unserialize (stdClass) 3.73 -
json_decode (array) 4.44 +19%
json_decode (stdClass) 4.91 +32%

unserialize は stdClass のほうが僅かに速い。いずれも json_decode よりも高速である。

json_decode (array) は第2引数に true を設定して連想配列として返した場合。配列のほうが速い。

エンコードとデコードを同数行う場合

実行時間 [s]
serialize + un〜 (array) 5.90 +2%
serialize + un〜 (stdClass) 5.79 -
json_encode + decode (array) 6.02 +4%
json_encode + decode (stdClass) 6.49 +12%

JSON + stdClass を除いて実行時間はほとんど同じになった。