Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Analyse der Leistungstests von json_encode, json_decode und serialize und unserialize in PHP

Eine kurze Analyse der Leistungstests von json_encode, json_decode und serialize und unserialize in PHP

coldplay.xixi
coldplay.xixinach vorne
2020-07-18 17:06:493393Durchsuche

Eine kurze Analyse der Leistungstests von json_encode, json_decode und serialize und unserialize in PHP

Ich habe heute zufällig darüber nachgedacht, ob ich PHP verwenden würde, um eine kleine dateibasierte Schlüsselwertdatenbank ähnlich BDB zu schreiben, um unstrukturierte Datensatzdaten zu speichern. Ich frage mich, wie effizient das ist wird sein?

Also habe ich darüber nachgedacht, wie man Objekte in PHP am kostengünstigsten serialisieren und speichern kann? Dann dachte ich an die von meinen früheren Kollegen empfohlenen JSON-Kodierungs- und Dekodierungsfunktionen.
Ihm zufolge sind json_encode und json_decode effizienter als die integrierten Funktionen serialize und unserialize.
Also beschloss ich, ein Experiment durchzuführen, um zu bestätigen, ob das, was meine Kollegen sagten, wahr war.
Die Experimente wurden in PHP 5.2.13- bzw. PHP 5.3.2-Umgebungen durchgeführt.
Verwenden Sie dieselbe Variable, um mit der oben genannten Methode 10.000 Mal zu kodieren oder zu dekodieren, und erhalten Sie die Zeit, die zum 10.000-maligen Ausführen jeder Funktion erforderlich ist.
Das Folgende ist eines der Testergebnisse in der PHP 5.2.13-Umgebung:

Der Code lautet wie folgt:

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

Das Folgende ist eines der Testergebnisse in die PHP 5.3.2-Umgebung:

Der Code lautet wie folgt:

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

Die Schlussfolgerung aus diesem Experiment ist: Die Effizienz von
json_encode und json_decode ist nicht höher als die von serialize und unserialize. Der Leistungsunterschied während der Deserialisierung beträgt etwa das Zweifache, und die Ausführungseffizienz von PHP 5.3 ist im Vergleich zu PHP 5.2 leicht verbessert.

Der Code lautet wie folgt:

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

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung

Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Leistungstests von json_encode, json_decode und serialize und unserialize in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen