UNIX的なアレ

UNIX的なこととかいろいろ

serializeとjson_encodeのパフォーマンス比較

json_encodeよりもserializeのほうが早いよねーと思い込んでいてとくに比較もしていなかったのですが、ふとやってみました。
ベンチ用のコードはこんな感じで。

<?php
require_once('Benchmark/Timer.php');
$t = new Benchmark_Timer;

for($i=0;$i<1000;$i++) $array[] = $i ;

$t->start();

json_encode($array);
$t->setMarker('json_encode');

serialize($array);
$t->setMarker('serialize');

$t->stop();
$t->display();

実行してみた結果はコチラ。

----------------------------------------------------------
marker        time index            ex time         perct
----------------------------------------------------------
Start         1265711724.38723200   -                0.00%
----------------------------------------------------------
json_encode   1265711724.38745300   0.00022101402282715  26.37%
----------------------------------------------------------
serialize     1265711724.38805300   0.00059986114501953  71.58%
----------------------------------------------------------
Stop          1265711724.38807000   1.7166137695312E-5   2.05%
----------------------------------------------------------
total         -                     0.00083804130554199100.00%
----------------------------------------------------------

json_encodeの方が早い・・・配列の大きさや形式をかえてみたりしましたが、逆転することはありませんでした。個人的にはかなり意外な結果。

参考

まぁとっくの昔に試していた人がいたわけで・・・
PHP5.2.0でserialize()とjson_encode()はどちらが速いのか