Maison >développement back-end >tutoriel php >Une explication des performances entre php imploser/exploser, sérialiser, json et msgpack
php imploser/exploser, sérialiser, json, comparaison des performances de msgpack
Première utilisation imploser, sérialiser, json_encode, msgpack_packCréez quatre fichiers texte pour les tests.
Le code de création est le suivant :
<?php $arr = array( 'content1' => '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); echo file_put_contents('implode.txt', implode(',',$arr), true).'<br>'; echo file_put_contents('serialize.txt', serialize($arr), true).'<br>'; echo file_put_contents('json.txt', json_encode($arr), true).'<br>'; echo file_put_contents('msgpack.txt', msgpack_pack($arr), true); ?>
Générer après création
implode .txt 92 octets
serialize.txt 165 octets
json.txt 223 octets
msgpack.txt 121 octets
caractères générés La chaîne size est trié comme suit implode < msgpack_pack < Serialize < >
Par exemple :sérialiser fait 147 octets
json_encode fait 91 octets
$arr = array('一','二','三','四','五','六','七','八','九','十');
Comparez les performances d'implode, de sérialisation, de json_encode et de msgpack_pack
<?php $arr = array( 'content1' => '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); $start = microtime(true); $i = 1000000; while($i>0){ // 分别测试运行时间及内存使用情况 $tmp = implode(',',$arr); // $tmp = serialize($arr); // $tmp = json_encode($arr); // $tmp = msgpack_pack($arr); $i--; } $end = microtime(true); echo 'run time:'.($end-$start).'s<br>'; echo 'memory usage:'.(memory_get_usage()/1024).'KB'; ?>implode < msgpack_pack < >
implode 1.3225722312927s 628.50KB serialize 2.0553789138794s 628.32KB json_encode 2.5058920383453s 628.34KB msgpack_pack 1.6431028842926s 628.24KBComparez les performances d'exploser, unserialize, json_decode, msgpack_unpack
Résultat : l'utilisation de la mémoire est similaire, en cours d'exécution time
explode < serialize < msgpack_unpack < json_decode<?php $data = file_get_contents('implode.txt'); //$data = file_get_contents('serialize.txt'); //$data = file_get_contents('json.txt'); //$data = file_get_contents('msgpack.txt'); $start = microtime(true); $i = 1000000; while($i>0){ $tmp = explode(',',$data); //$tmp = unserialize($data); //$tmp = json_decode($data, true); //$tmp = msgpack_unpack($data); $i--; } $end = microtime(true); echo 'run time:'.($end-$start).'s<br>'; echo 'memory usage:'.(memory_get_usage()/1024).'KB'; ?>
explode 1.7446749210358s 628.74KB unserialize 2.1386790275574s 628.67KB json_decode 5.2423169612885s 628.84KB msgpack_unpack 2.2290098667145s 628.63KBEt parmi les trois comparaisons, la vitesse d'exécution optimale, l'utilisation de la mémoire et l'utilisation de l'espace sont msgpack, suivi de sérialiser et enfin json.
Si possible, il est recommandé d'utiliser msgpack pour sérialiser les données .
À propos de msgpack, vous pouvez consulter l'article que j'ai écrit auparavant : "Format de sérialisation de MessagePack"
Cet article concerne l'implosion/l'explosion de php , serialize, json , msgpack pour comparer les performances. Pour plus de contenu connexe, veuillez faire attention au site Web chinois de php.
Recommandations associées :
Explication de la méthode de remplacement php str_replace pour des heures spécifiées
Instructions d'utilisation de header, headers_sent, headers_list, header_remove
Solution pour changer le type de champ entier renvoyé par mysql via PDO en type String
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!