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 ( 'name' => '全能头盔', 'quality' => 'Blue', 'ti_id' => 21302, 'is_bind' => 1, 'demand_conditions' => array ( 'HeroLevel' => 1, ), 'quality_attr_sign' => array ( 'HeroStrength' => 8, 'HeroAgility' => 8, 'HeroIntelligence' => 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 'DONE.'; ?>
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!