ホームページ  >  記事  >  バックエンド開発  >  PHP での json_encode、json_decode、およびシリアル化とシリアル化解除のパフォーマンス テストの簡単な分析

PHP での json_encode、json_decode、およびシリアル化とシリアル化解除のパフォーマンス テストの簡単な分析

coldplay.xixi
coldplay.xixi転載
2020-07-18 17:06:493393ブラウズ

PHP での json_encode、json_decode、およびシリアル化とシリアル化解除のパフォーマンス テストの簡単な分析

今日たまたま考えたのですが、PHP を使用して、BDB に似たファイルベースの Key-Value の小さなデータベースを作成して、非構造化レコード型データを保存すると、どれほど効率的になるだろうかと考えました。なるだろうか?

そこで、PHP で最もコストパフォーマンスの高いオブジェクトをシリアル化して保存する方法を考えました。そこで、以前の同僚が推奨していた JSON エンコードおよびデコード関数を思い出しました。
彼によると、json_encodejson_decode は、組み込み関数 serializeunserialize よりも効率的です。
そこで私は、同僚の言ったことが真実かどうかを確認するために実験を行うことにしました。
実験はそれぞれ PHP 5.2.13 環境と PHP 5.3.2 環境で実施されました。
同じ変数を使用して上記の方法でエンコードまたはデコードを 10,000 回実行し、各関数を 10,000 回実行するのに必要な時間を取得します。
以下は、PHP 5.2.13 環境でのテスト結果の 1 つです:

コードは次のとおりです:

json : 190 
serialize : 257 
json_encode : 0.08364200592041 
json_decode : 0.18004894256592 
serialize : 0.063642024993896 
unserialize : 0.086990833282471 
DONE.

以下は、PHP 5.2.13 環境でのテスト結果の 1 つです。 PHP 5.3.2 環境:

コードは次のとおりです:

json : 190 
serialize : 257 
json_encode : 0.062805891036987 
json_decode : 0.14239192008972 
serialize : 0.048481941223145 
unserialize : 0.05927300453186 
DONE.

この実験から得られた結論は次のとおりです:
json_encode および json_decode は、serialize よりも効率的ではありませんが、unserialize は非常に効率的です。デシリアライズ時のパフォーマンスの差は、PHP 5.3 の約 2 倍です。PHP 5.3 の実行効率はわずかに異なります。 PHP 5.2と比較して改善されました。

コードは次のとおりです:

<?php 
$target = array ( 
&#39;name&#39; => &#39;全能头盔&#39;, 
&#39;quality&#39; => &#39;Blue&#39;, 
&#39;ti_id&#39; => 21302, 
&#39;is_bind&#39; => 1, 
&#39;demand_conditions&#39; => 
array ( 
&#39;HeroLevel&#39; => 1, 
), 
&#39;quality_attr_sign&#39; => 
array ( 
&#39;HeroStrength&#39; => 8, 
&#39;HeroAgility&#39; => 8, 
&#39;HeroIntelligence&#39; => 8, 
), 
); 
$json = json_encode($target); 
$seri = serialize($target); 
echo "json :\t\t" . strlen($json) . "\r\n"; 
echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_encode($target); 
} 
$etime = microtime(true); 
echo "json_encode :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_decode($json); 
} 
$etime = microtime(true); 
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
serialize($target); 
} 
$etime = microtime(true); 
echo "serialize :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
unserialize($seri); 
} 
$etime = microtime(true); 
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n"; 
echo &#39;DONE.&#39;; 
?>

関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで

以上がPHP での json_encode、json_decode、およびシリアル化とシリアル化解除のパフォーマンス テストの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。