~bohwaz/blog/

Avec de vrais morceaux de 2.0 !

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; ?>
Écrire un commentaire
(facultatif)
(facultatif)
(obligatoire)
                     _       _          
  ___ ___  _ __   __| |_   _(_)_ __ ___ 
 / __/ _ \| '_ \ / _` | | | | | '__/ _ \
| (_| (_) | | | | (_| | |_| | | | |  __/
 \___\___/|_| |_|\__,_|\__,_|_|_|  \___|
                                        
(obligatoire)

Les adresses internet seront converties automatiquement.
Tags autorisés : <blockquote> <cite> <pre> <code> <var> <strong> <em> <del> <ins> <kbd> <samp> <abbr>