Maison > Article > développement back-end > Une brève analyse des tests de performances de json_encode, json_decode et sérialiser et désérialiser en PHP
Je pensais par hasard aujourd'hui, si j'utilise PHP pour écrire une petite base de données de valeurs-clés basée sur des fichiers similaire à BDB pour stocker des données de type enregistrement non structurées, je me demande quelle est son efficacité sera?
J'ai donc réfléchi à la façon de sérialiser et de stocker des objets en PHP de la manière la plus rentable ? J’ai ensuite pensé aux fonctions d’encodage et de décodage JSON recommandées par mes précédents collègues.
Selon lui, json_encode
et json_decode
sont plus efficaces que les fonctions intégrées serialize
et unserialize
.
J'ai donc décidé de mener une expérience pour confirmer si ce que mes collègues disaient était vrai.
Les expériences ont été menées respectivement dans les environnements PHP 5.2.13 et PHP 5.3.2.
Utilisez la même variable pour encoder ou décoder 10 000 fois en utilisant la méthode ci-dessus et obtenez le temps nécessaire pour exécuter chaque fonction 10 000 fois.
Ce qui suit est l'un des résultats des tests dans l'environnement PHP 5.2.13 :
Le code est le suivant :
json : 190 serialize : 257 json_encode : 0.08364200592041 json_decode : 0.18004894256592 serialize : 0.063642024993896 unserialize : 0.086990833282471 DONE.
Ce qui suit est l'un des résultats des tests dans l'environnement PHP 5.3.2 :
Le code est le suivant :
json : 190 serialize : 257 json_encode : 0.062805891036987 json_decode : 0.14239192008972 serialize : 0.048481941223145 unserialize : 0.05927300453186 DONE.
La conclusion tirée de cette expérience est : L'efficacité de json_encode
et json_decode
n'est pas supérieur à celui de serialize
et unserialize
. La différence de performances lors de la désérialisation est d'environ deux fois et l'efficacité d'exécution de PHP 5.3 est légèrement améliorée par rapport à celle de PHP 5.2.
Le code est le suivant :
<?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.'; ?>
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!