Mario: Welche Template Engine?

Hallo!

Ich habe mein letztes Projekt mit Hilfe der Smarty Template Engine gemacht. Nun habe ich aber festgestellt dass diese nicht wirklich schnell ist. Da so eine Template Engine aber schon eine feine Sache ist um Source und HTML Code zu trennen würde ich gern mal wissen ob es evt. etwas schnelleres als die Smarty gibt und ähnlichen Funktionsumfang hat. Ich brauche ja nicht alles aus der Smarty, aber die Schleifen und if-Abfragen etc. waren schon ganz nett.
Gibt es evt. irgendwo einen Vergleich in Sachen Geschwindigkeit zum nachlesen? Oder wer verwendet welche Template Engine?

Vielen Dank und noch einen schönen Sonntag...
Mario

  1. Hi,

    hast bei Smarty auch das Caching aktiviert? Eigentlich ist Smarty für die Komplexität der Engine sehr schnell, da die Templates aus Performance-Gründen vor der Ausführung zunächst in Pre-Code (PHP) umgewandelt werden. Das rentiert sich natürlich erst ab dem zweiten Request, wenn die Seite aus dem Cache geholt werden kann.

    Tipp: im PEAR gibt es noch einige andere Engines von guter Qualität für unterschiedliche Zwecke, die evtl. schneller als Smarty sind.

    Eigentlich wirkt sich jede nicht direkt in die Programmiersprache implentierte Template-Engine mehr oder weniger schlecht auf die Gewindigkeit aus, da Dateien eingelesen, geparst, Ersetzung vorgenommen und evtl. noch Schleifen durchlaufen werden müssen. Sind die Anweisungen dafür in PHP codiert und basieren auch noch auf objektorientierter Programmierung, hat bereits der Interpreter einiges zu tun...  Die schnellste Engine überhaupt kann also nur in C oder besser noch Assembler direkt programmiert werden...

    Wenn Dir Performance wirklich so wichtig ist, Du aber keine aufwendige Lösung programmieren oder lange nach einer solchen suchen willst und eigentlich nur wenige Funktionen brauchst, verzichte besser komplett auf eine spezielle Engine.

    In PHP kannst Du Template auch etwa so umsetzen. Die Datei bindet man dann mit Include ein, um Logik und Ausgabe zu trennen:

    index.php:

    include 'templates.php';

    $html = "";
     $html .= start_html('Mini Template', 'Das ist ein sehr simples Beispiel');
     // etc.
     $html .= end_html();

    print $html;

    templates.php:

    function start_html($v1, $v2)
     {
       return <<< _END_
         <html>
          <head>
           <title>$v1</title>
          </head>
          <body>
           <h1>$v2</h1>

    _END_;
     }

    function end_html()
     {
       return <<< _END_
          </body>
         </html>
    _END_;
     }

  2. moin,

    Ich habe mein letztes Projekt mit Hilfe der Smarty Template Engine gemacht. Nun habe ich aber festgestellt dass diese nicht wirklich schnell ist.

    smarty kenne ich leider nur ausm buch ...
    mein (verwendeter) favorit ist vlib: http://vlib.activefish.com/.

    ist zwar mit sicherheit nicht so umfangreich wie smarty, aber dafür auch leicht zu überblicken.
    wegen der performance musst du auch beachten, dass du keine templates verschachtelst - aber das wirst du sicher nicht getan haben :)

    bei vlib -  und sicher auch bei allen anderen templatesystemen - kannste die partsetime mit ausgeben lassen, weiss aber jetzt nicht genau wie.

    andi