Localisation en PHP: gettext versus sqlite
Attention il n'est question ici que de PHP5 (gettext en PHP4 est *très* lent).
Le test est effectué sur 5000 chaînes différentes identifiées par un nom "stringXX" ou XX est le nombre de la chaîne (oui on fait dans le simple). La table SQLite est composée de trois champs: id, value, lang. Un index est réalisé sur lang et id.
<strong>Résultat SQLite</strong> Temps d'exécution: 0.597s Mémoire utilisée: 44.944 Ko Taille du fichier contenant les chaînes: 719 Ko
<strong>Résultat gettext</strong> Temps d'exécution: 0.041s Mémoire utilisée: 44.200 Ko Taille du fichier contenant les chaînes: 326 Ko (fichier .mo compilé) Taille du fichier contenant les chaînes: 393 Ko (fichier .po)
Si la consommation mémoire montre peu de différence, en rapidité c'est flagrant: gettext est 10 fois plus rapide. Et niveau espace de stockage c'est difficile de comparer vu que gettext utilise un fichier compilé en plus des données éditables.
Voir aussi ce billet très intéressant : Benchmarking PHP Localization - Is gettext fast enough? comparant gettext/php-gettext et l'utilisation d'arrays.
trax
Les résultats d'un bench avec aussi peu d'explications sur les conditions n'est pas très probant.
Quel intérêt à comparer gettext et sqlite pour PHP ? SQlite est souvent utilisé avec PHP ?
BohwaZ
Ça fait partie d'un ensemble de tests sur la question de quel backend utiliser pour les chaînes de traduction.