そこで、最もコスト効率の高い方法で PHP でオブジェクトをシリアル化して保存する方法を考えました。そこで、以前の同僚が推奨していた JSON エンコードおよびデコード関数を思い出しました。
彼によると、json_encode と json_decode は組み込みのシリアライズ関数とアンシリアライズ関数よりも効率的です。
そこで私は、同僚の言ったことが真実かどうかを確認するために実験を行うことにしました。
実験はそれぞれ PHP 5.2.13 環境と PHP 5.3.2 環境で実施されました。
同じ変数を使用して、上記の方法でエンコードまたはデコードを 10,000 回実行し、各関数を 10,000 回実行するのに必要な時間を取得します。
以下は、PHP 5.2.13 環境でのテスト結果の 1 つです:
コードをコピー コードは次のとおりです:
json : 190
シリアル化 : 257
json_encode : 0.08364200592041
json_decode : 0.18004894256592
シリアル化 : 0.063642024993896
シリアル化解除: 0.086990833 282471
完了
コードをコピー コードは次のとおりです:
json: 190
シリアル化: 257
json_encode : 0.062805891036987
json_decode : 0.14239192008972
シリアル化 : 0.048481941223145
unserialize : 0.05927300453186
完了 >
コードをコピーします コードは次のとおりです:
< ;?php
$target = array (
'name' => 'オールマイティ ヘルメット',
'quality' => 'Blue',
'ti_id' => 21302,
' is_bind ' => 1,
'demand_conditions' =>
array (
'HeroLevel' => 1,
),
'quality_attr_sign' =>
'HeroStrength ' => 8,
'HeroAgility' => 8,
'HeroIntelligence' => 8,
),
);
$json = json_encode ($target); $seri = シリアル化($target);
エコー "json :tt" . "rn";
エコー strlen($ seri) ; 🎜>$stime = microtime(true);
for ($i = 0; $i {
json_encode($target); etime = microtime(true);
echo "json_encode :t" . "rn"; ------------------
$stime = microtime(true);
for ($i = 0; $i {
json_decode($json);
$etime = microtime(true);
echo "json_decode :t" . "rnrn"; >//---------------------------------
$stime = microtime(true); >for ($i = 0; $i {
serialize($target);
}
$etime = microtime( true);シリアル化:t" . ($etime - $stime) . "rn";
//-------------------------- -- --------------
$stime = microtime(true);
for ($i = 0; $i {
unserialize($seri);
$etime = microtime(true);
echo "unserialize :t" . "rnrn"; .';
?>