Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

phpの配列/文字列変換の処理時間を調べてみた

昨日リリースしたMy_CookieはCookieの処理を行うコンポーネントです。
Cookieは元々値として文字列しか保存できませんが、
せっかくなので配列の保存にも対応しようかと思ってます。

やり方としては、My_Cookieの保存直前に値が配列であれば文字列変換し、
読み込み直後に配列へと戻すというものです。

そこで、今さらながらphpで配列/文字列変換をする方法に
どのようなものがあるか調べてみました。


調べたところ、ここの記事にある4種類のものが
一般的な変換方法のようでした。


[PHP] 配列を文字列に変換して取っておく4つの方法 | Suinasia


で、ここに書いてある内容で測定をしてみました。


保存するのはCookie情報であるため、
大容量ではなく、せいぜい数kb程度というのが前提条件です。

測定したのは私のローカルのxampp環境、PHP Versionは5.2.9。
保存する配列は次のようなもの。

$data = array('a' => '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890',
              'b' => '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
              );


測定方法は次のようなものです。

$cookie = new My_Cookie();

$start = microtime(true);
for($i = 0; $i < 100000; $i++){
    $str = serialize($data); // ケースごとにシリアライズ条件を変える
    $cookie->set('data', $str);
    $str = $cookie->get('data');
    $data = unserialize($str); // ケースごとにアンシリアライズ条件を変える
}
$end = microtime(true);
echo $end - $start;


これを各ケース5回実行し、平均を取ります。
結果としては次のようになりました。

・serialize()
 0.349159384

・var_export()
 0.589158821

・json_encode()
 0.279171133

・http_build_query()
 0.294227314


小規模なデータだとvar_exportは重めで、
他は僅差ですがjson_encodeが一番早いという結果になりました。

今回は大容量のデータ変換は想定していないため、
json_encodeを採用して作ってみます。

TrackBack URL :

Leave a comment  

name

email

website

Submit comment