Smarty versus Template_Lite
Template_Lite est censé être la version légère de Smarty en théorie (d'où son ex-nom: Smarty Light), mais en pratique qu'en est-il ? Voici des tests effectués en local sur Apache2 + PHP 5.2.0. Les résultats sont affichés de la manière mémoire utilisée / temps pris.
Chargement (require + new Class; + initialisation des variables)
Moteur | Résultat |
---|---|
Smarty | 346 Ko / 0,012 sec. |
Template_Lite | 241 Ko / 0,008 sec. |
Template simple sans assign, juste un fetch (10 000 itérations)
Moteur | Sans compilation | Avec compilation |
---|---|---|
Smarty | 1 354 Ko / 2,707 sec. | 282 Ko / 3,217 sec. |
Template_Lite | 364 Ko / 3,205 sec. | 2 Ko / 3,358 sec. |
Template simple avec une seule variable assignée à afficher (10 000 itérations)
Moteur | Sans compilation | Avec compilation |
---|---|---|
Smarty | 1 355 Ko / 3,178 sec. | 283 Ko / 3,196 sec. |
Template_Lite | 368 Ko / 3,3 sec. | 3 Ko / 3,298 sec. |
Template avec un foreach utilisant un array contenant 6 entrées et un modifieur escape sur chaque affichage de variable (10 000 itérations)
Moteur | Sans compilation | Avec compilation |
---|---|---|
Smarty | 147 316 Ko / 9,242 sec. | 147 316 Ko / 6,997 sec. |
Template_Lite | 404 Ko / 7,518 sec. | 35 Ko / 7,631 sec. |
Conclusion : les résultats parlent d'eux-même, smarty a beau être un poil plus rapide, sa gestion de la mémoire semble catastrophique. Victoire à Template_Lite :)
En bonux le code généré par les deux moteurs en template compilé pour le dernier test :
<strong>En smarty :</strong> <?php require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); smarty_core_load_plugins(array('plugins' => array(array('modifier', 'escape', 'test.tpl', 10, false),)), $this); ?> <?php $_from = $this->_tpl_vars['truc']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }if (count($_from)): foreach ($_from as $this->_tpl_vars['miam']): ?> * <?php echo ((is_array($_tmp=$this->_tpl_vars['miam'])) ? $this->_run_mod_handler('escape', true, $_tmp) : smarty_modifier_escape($_tmp)); ?> <?php endforeach; endif; unset($_from); ?>
<strong>En template_lite :</strong> <?php require_once('/home/bohwaz/svn/misc/libs/template_lite/plugins/modifier.escape.php'); $this->register_modifier("escape", "tpl_modifier_escape"); ?> <?php if (count((array)$this->_vars['truc'])): foreach ((array)$this->_vars['truc'] as $this->_vars['miam']): ?> * <?php echo $this->_run_modifier($this->_vars['miam'], 'escape', 'plugin', 1); ?> <?php endforeach; endif; ?>
koh
je suis,tres admirative de la lucidite d'esprit dont tu fais reuve :)