IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Comparatif : Découverte des principaux moteurs de templates en PHP

Smarty, phpBB2, TinyButStrong, VTemplate, ModeliXe
Image non disponible


précédentsommaire

VII. Conclusion

VII-A. Comparaison

Mes conclusions peuvent être subjectives, à vous de vous faire une idée.

Les bibliothèques

 

Version comparée

Qualité du code

Syntaxe du gabarit

Cache

Écrit pour PHP

Utilisé par

Licence

Smarty

2.6.14

recommandations PEAR

recommandations PEAR

oui

4

cf. listeListe des sites utilisant Smarty

LGPL

phpBB2

1.10.2.5

OK + commentaires

commentaires HTML

aucun

3

les forums phpBB2

GPL

TinyButStrong

3.2.0 pour PHP >= 5.0

homogène

configurable

oui

4 adapté 5

cf. listeListe des sites utilisant TinyButStrong

LGPL

VTemplate

1.3.3 Base Edition

médiocre

peu configurable

en théorie

4

inconnu

GPL

ModeliXe

1.2.2

moyenne

XML ou PEAR

oui

4 compatible 5

inconnu

LGPL

Test de performances

J'ai entièrement refait les tests de performances des scripts depuis que j'ai publié ce comparatif pour la première fois.

Je vais décrire ici en détail ma méthode et fournir le script utilisé. Si vous obtenez des résultats différents, je vous serais reconnaissant de . De même, si ma méthode ne vous semble pas appropriée, merci de me le faire savoir.

J'utilise l'utilitaire Apache Bench (ab.exe), fourni en standard avec ma distribution d'Apache 2.0.59 et je tourne sous Windows.

Je doute que ma configuration système soit très utile, mais la voici tout de même :

  • Système : Windows XP SP2 ;
  • Processeur : Intel Pentium M cadencé à 1300 MHz ;
  • RAM : 512 Mo ;
  • Apache : 2.0.59 ;
  • PHP : 5.2.1 (Zend Core 2.0).

Skrol 29 (TinyButStrong) m'ayant convaincu de l'inutilité de ma méthode antérieure, j'ai adapté les scripts de ce comparatif pour éviter d'utiliser la base de données. Toutes les données sont codées en dur dans le script db-connect.php et les appels à MySQL sont supprimés.

Ma démarche est constituée des actions suivantes :

  1. Supprimer les fichiers de log ;
  2. Vider les répertoires des fichiers de cache et de compilation des différents moteurs ;
  3. Récupérer des statistiques préliminaires (ab.exe) ;
  4. Calculer la moyenne pour chaque moteur ;
  5. Supprimer les quelques rapports erronés générés par Apache Bench ;
  6. Calculer les statistiques finales (le comparatif).

Les statistiques sont récupérées sur 5000 chargements consécutifs par Apache Bench, pour chaque moteur. L'ensemble des tests est fait 30 fois (c'est-à-dire 30 fois 5000 chargements de chaque script) afin d'obtenir une moyenne fiable. La valeur utilisée dans le rapport est le nombre de requêtes par seconde.

À la fin de l'exécution du script de test, une fois les rapports erronés supprimés, nous calculons l'écart entre le nombre de requêtes par seconde du script de référence et le nombre de requêtes par seconde de chaque autre script : résultat = (référence / moteur) * 100. Le nombre obtenu est un pourcentage : par exemple, « 150 % » signifie que le moteur considéré est parvenu à exécuter 50 % de chargements de moins par seconde, par rapport au script de référence. Une autre manière de le comprendre est : « ce moteur met 150 % du temps du script de référence pour effectuer le même nombre de chargements ».

Fichiers du test de performances :

  • Le script PHP de génération des rapports [ FTP ] [ HTTP ] ;
  • Les rapports qui ont donné les résultats ci-dessous [ FTP ] [ HTTP ] ;
  • Le rapport final [ FTP ] [ HTTP ] ;
  • Les scripts modifiés [ FTP ] [ HTTP ].

Mon expérience avec ces bibliothèques (sans gestion du cache)

Voici un tableau récapitulatif de mon expérience avec ces moteurs de gabarits. Veuillez considérer que certaines réponses sont subjectives, et que la totalité des réponses découle de la comparaison que j'ai décrite dans les pages précédentes.

 

Page produite

Objectif

Prise en main

Flexibilité

Configuration

Performances / référence

Débogage

Smarty

oui

non

facile

immédiate

héritage

123 %

facile

phpBB2

oui

oui

facile

rapide

aucune

189 %

classique

TinyButStrong

oui (sauf cache)

non

complexe

immédiate

héritage

245 %

complexe

VTemplate

OK (sauf cache)

oui

facile

problématique

héritage + constantes

184 %

classique

ModeliXe

OK

oui

facile

malaisée

héritage + constantes

168 % (PEAR) ou 191 % (XML)

classique

Classement (décroissant) :

  1. Smarty ;
  2. ModeliXe ;
  3. phpBB2 / VTemplate ;
  4. TinyButStrong.

Leur gestion du cache

Voici un tableau récapitulatif de mon expérience avec ceux des moteurs de gabarits (de ma liste) qui proposent une gestion du cache.

 

Adaptation au projet

Performances / référence

Smarty

immédiate

116 %

phpBB2

non prévu pour

n/a

TinyButStrong

malaisée

113 %

VTemplate

après débogage

144 %

ModeliXe

immédiate

117 % (PEAR) ou 114 % (XML)

Classement (décroissant) :

  1. ModeliXe / Smarty / TinyButStrong ;
  2. VTemplate.

VII-B. Classement (subjectif)

Le classement en fonction des performances ne me semble pas suffisant pour juger de ce type de bibliothèque.

Ces classements dépendent de mon interprétation des comparaisons précédentes : je ne saurais trop vous recommander de vous construire votre propre opinion !

Séparation entre la logique et la présentation (du plus au moins adapté) :

  1. phpBB2, VTemplate et ModeliXe n'ont aucun élément de programmation au sein du gabarit, ils se contentent de définir des zones à remplir, à répéter ou à ignorer ;
  2. Smarty et TinyButStrong optent pour des gabarits plus complexes afin de simplifier le code PHP.

Nous retrouvons ici les deux groupes évoqués en introduction : d'une part (en seconde position ici), les moteurs incorporant le point de fusion dans le gabarit et, d'autre part (en première position selon moi), ceux le laissant dans le code PHP.

Nous n'avons cependant pas de grand gagnant, il nous faut donc trouver un autre argument que la possibilité de séparation entre logique et présentation.

Simplicité de la syntaxe du gabarit (par ordre décroissant) :

  1. phpBB2 : des commentaires HTML comportant les mots BEGIN et END ;
  2. VTemplate : des commentaires HTML avec une touche de XML ;
  3. ModeliXe : une adaptation de la syntaxe XML ;
  4. Smarty : une nouvelle syntaxe fondée sur les accolades et comportant des éléments de programmation ;
  5. TinyButStrong : une nouvelle syntaxe fondée sur les crochets et comportant des éléments de programmation.

VII-C. Épilogue

Je ne vous recommande pas la lecture de ce qui suit si vous n'avez pas étudié vous-même les différents moteurs.

Je rappelle ici l'objectif principal qui doit être atteint par un moteur de gabarits : permettre une séparation efficace du code source de présentation (par exemple HTML) et du code source de logique applicative (PHP).

Pour être honnête, un seul des cinq moteurs testés me semble convenable. Ce n'est bien sûr qu'un avis personnel et conditionné par ce que j'ai énoncé en introduction : chaque développeur devrait avoir son opinion sur ce sujet.

Smarty est le plus mature et le plus propre. Cependant, la syntaxe utilisée dans ses gabarits est tellement proche du langage PHP lui-même que la séparation logique/présentation est floue, voire inefficace. Je ne suis pas certain d'être d'accord avec le qualificatif de moteur de templates. Je ne dis pas que Smarty est inutile, mais plutôt qu'il n'est pas utile en tant que moteur de gabarits.

phpBB2 a le moteur le plus facile à utiliser, mais il ne gère pas la mise en cache. Ce n'est pas un défaut, c'est simplement un avantage qu'il n'a pas.

TinyButStrong promet de grandes choses, mais a dû faire des concessions pour accéder aux requêtes de ses utilisateurs, ce qui donne une classe très difficile à utiliser. TBS est de plus en plus « strong », mais de moins en moins « tiny ». Par ailleurs, la syntaxe de son gabarit souffre du même inconvénient que celle de Smarty.

VTemplate utilise des gabarits à la syntaxe redondante et comporte des bugs de fonctionnement. C'est dommage, car il est sur la bonne voie.

ModeliXe comporte des bugs de fonctionnement.

À choisir parmi ces moteurs, je prends celui de phpBB2. Il permet une séparation correcte entre la logique applicative et l'affichage, il est facile d'accès et il fonctionne bien. De plus, il est maintenu et utilisé par une communauté gigantesque.

Si vous utilisez l'un ou l'autre moteur dans vos sites, n'hésitez pas à nous le faire savoir et à nous donner vos impressions (cf. lien ci-dessous vers le débat sur nos forums), surtout si elles sont différentes de celles proposées ici !

VII-D. Téléchargement

Voici les scripts utilisés :

  • C:\Web\offline\shared\ (les bibliothèques) [ FTP ] [ HTTP ] ;
  • C:\Web\offline\sites\comparatifs\ (les classes personnalisées) [ FTP ] [ HTTP ] ;
  • C:\Web\online\comparatifs\templates\ (les scripts publics) [ FTP ] [ HTTP ] ;
  • Les scripts de création de la base de données [ FTP ] [ HTTP ].

VII-E. Liens


précédentsommaire

Copyright © 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.