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
Release: 2023-04-09 09:44:02
forward
3546 people have browsed it

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.
Copy after login

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.
Copy after login

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;; 
?>
Copy after login

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!

source:jb51.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template