例えば下記のようなコードをPHP4とPHP5で実行速度を比べてみる。
// $arrayは連想配列とする。
$serializeData = serialize($array);
$startTime = getmicrotime();
// アンシリアライズを単純に繰り返す。
for ( $i = 0; $i < style="color: rgb(0, 0, 153);">$i++ ) {
$unserializeData = unserialize($serializeData);
}
$endTime = getmicrotime();
echo $startTime - $endTime;
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
配列数が増えてくると実行速度がどのように変化するか調べてみた。
(ただしWin32版)
配列数 1000 5000 10000 50000 100000 PHP4 0.34秒 3.60秒 13.17秒 266.86秒 - PHP5 0.19秒 1.17秒 2.45秒 15.06秒 50.67秒 増加量 179% 309% 538% 1772%
遅いだけならまあ関数を使わないだけで済むのだけど、実はsessionを利用するときに問題となる。
http://jp.php.net/manual/ja/intro.session.php より引用。
全ての登録された変数は、リクエストが終了した後に、シリアル化されます。・・・
マニュアルではどういう意味か分かりにくいが、実際は連想配列をセッションに保存する時はserialize/unserializeされている(と思われる)。
つまり処理の高速化の目的で巨大な連想配列をセッションに保存して利用しても、PHP4では大して早くなっていない可能性がある。
まあ特別な理由が無ければPHP5を使おうという結論で・・・。
0 件のコメント:
コメントを投稿