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

Une brève analyse des tests de performances de json_encode, json_decode et sérialiser et désérialiser en PHP

coldplay.xixi
coldplay.xixiavant
2020-07-18 17:06:493494parcourir

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 ( 
&#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;; 
?>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer