Home >Backend Development >PHP Tutorial >A brief analysis of the performance testing of json_encode, json_decode and serialize and unserialize in PHP

A brief analysis of the performance testing of json_encode, json_decode and serialize and unserialize in PHP

coldplay.xixi
coldplay.xixiforward
2020-07-18 17:06:493577browse

A brief analysis of the performance testing of json_encode, json_decode and serialize and unserialize in PHP

I was thinking by chance today, if I use PHP to write a file-based Key-Value small database similar to BDB to store unstructured record-type data, I wonder how efficient it will be?

So I thought of how to serialize and store objects in PHP with the highest cost performance? Then I thought of the JSON encoding and decoding functions recommended by my previous colleagues.
According to him, json_encode and json_decode are more efficient than the built-in serialize and unserialize functions.
So I decided to conduct an experiment to confirm whether what my colleagues said was true.
The experiments were conducted in PHP 5.2.13 and PHP 5.3.2 environments respectively.
Use the same variable to encode or decode 10,000 times using the above method, and get the time required to execute each function 10,000 times.
The following is one of the test results in the PHP 5.2.13 environment:

The code is as follows:

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

The following is one of the test results in the PHP 5.3.2 environment:

The code is as follows:

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

The conclusion drawn from this experiment is:
json_encode and json_decode are not more efficient than serialize and unserialize are highly efficient. The performance difference during deserialization is about twice that of PHP 5.3. The execution efficiency of PHP 5.3 is slightly improved compared to PHP 5.2.

The code is as follows:

<?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;; 
?>

Related learning recommendations: PHP programming from entry to proficiency

The above is the detailed content of A brief analysis of the performance testing of json_encode, json_decode and serialize and unserialize in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete