vendredi 16 mars 2007

Petit benchmark PHP : json_encode vs serialize

Âmes non techniciennes, passez votre chemin...

Tout simplement, pendant le développement du site de Kappea, j'ai eu besoin d'une comparaison entre les fonctions json_encode() et serialize() de PHP 5.2
Les deux approches permettent de transformer des variables en chaîne de caractère, et JSON et beaucoup utilisé depuis quelques temps pour les échanges Ajax, car il est implémenté dans différents langages (contrairement à serialize() qui n'est que pour PHP).

Pour moi, l'intérêt est de sérialiser un tableau pour stocker la valeur dans un cookie. Or la fonction serialize() me renvoie une chaîne de caractère qui est environ 40% plus longue que celle de json_encode(). Le gain de place est précieux pour moi, car un cookie a une taille limite (environ 4000 caractères). Mais il ne faut pas que ce gain de place ait un important coût de temps.
J'ai donc fait un petit benchmark qui ne prétend nullement être universel, sur ma machine perso avec Ubuntu 6.10, et j'ai remarqué que json_encode() met environ... 40% de temps de plus que serialize().
Cela dit, la différence n'est tout de même pas énorme, puisque dans mon cas cela équivaut à 2,5 millionièmes de seconde de plus. Je sais que je suis un maniaque de l'optimisation, mais je crois que je vais me satisfaire de ça.

En tout cas, comme je n'avais pas trouvé de comparatif entre ces deux fonctions, je le communique (si ça peut servir à d'autres...)

Aucun commentaire: