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 ( '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.'; ?>
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!