• Linéarisation de tableaux : JSON V. serialize

    Je viens de faire un benchmark entre JSON et serialize en PHP, et apparemment JSON est vraiment plus rapide.
    J'ai fait un tableau contenant 500 sous tableaux, puis j'ai testé la vitesse de serialize, json_encode, unserialize et json_decode. Par JSON, la linéarisation et la délinéarisation sont beaucoup plus rapides (2 secondes de moins sur 1000 itérations, c'est quand même pas mal)
    En plus, un tableau linéarisé à la JSON prend un peu moins de place, ce qui n'est pas plus mal.

    $tableau = array('Chaine',
    'cle' => array('sous tableau', 54)
    );
    echo serialize($tableau);
    //Affiche a:2:{i:0;s:6:"Chaine";s:3:"cle";a:2:{i:0;s:12:"sous tableau";i:1;i:54;}}
    echo json_encode($tableau);
    //Affiche {"0":"Chaine","cle":["sous tableau",54]}
    [code=php]$tableau = array('Chaine',
    'cle' => array('sous tableau', 54)
    );
    echo serialize($tableau);
    //Affiche a:2:{i:0;s:6:"Chaine";s:3:"cle";a:2:{i:0;s:12:"sous tableau";i:1;i:54;}}
    echo json_encode($tableau);
    //Affiche {"0":"Chaine","cle":["sous tableau",54]}
    [/code]


    « Newton et la PommeArrivée à Centrale Nantes »

    Tags Tags : ,
  • Commentaires

    1
    Symbiote
    Mercredi 15 Juillet 2009 à 16:57
    Tu es dans le faux mon ami regarde bien ton bench car c'est loin d'être comme tu le dis c même carrément plutot l'inverse ;) ++
    2
    Samedi 18 Juillet 2009 à 11:32
    Mmh, ça me surprend ce que tu dis, j'ai fait plusieurs séries de tests, qui ont tous montré la supériorité de JSON.

    Et au delà des perfs, le formzt de sortie de serialize est beaucoup trop redondant (et du coup beaucoup plus volumineux)
    3
    Lundi 20 Juillet 2009 à 15:32
    Après investigation, tout dépend de la taille des données utilisées. JSON est meilleur pour les grosses quantités de données.

    Je ferai un topo plus complet là dessus sous peu.
    Suivre le flux RSS des commentaires de cet article


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :