3. Oktober 2012 | 1 Comment Endlich ist es so weit, wenn auch mit einem Tag verspätung 😉 Willkommen zum letzten Eintrag der Reihe „Template-Engines im Vergleich“. Wie vor einigen Wochen angekündigt werde ich Heute auf die letzten Kleinigkeiten der angesprochenen Template-Engines (Smarty, Twig, Mustache und RainTPL) eingehen: Performance, Speicher-Auslastung und ein kleines Fazit. Als Basis habe ich mir den Benchmark von phpcomparison.net angesehen und um ein paar Punkte erweitert… Unter anderem habe ich den Benchmark um die Mustache Template-Engine erweitert. Die Tests innerhalb des Benchmarks sind zwar relativ einfach gehalten (lediglich assign und loop), aber es wäre auch wirklich schwierig bzw. extrem aufwändig „echte“ Tests zu schreiben welche die speziellen Features der verschiedene Systeme voll ausreizen – Vor allem wäre hierbei ein Vergleich der Systeme quasi kaum möglich. Die Ergebnisse Die Test-Ergebnisse haben mich ehrlich gesagt kaum überrascht – So haben z.B. RainTPL und Mustache die Nase weit vorne! Die beiden Systeme sind allerdings auch vom aufbau her die einfachsten bzw. diejenigen mit dem kleinsten Funktionsumfang. Das Twig schneller als Smarty sein würde hatte ich zwar geahnt, bin aber nicht davon ausgegangen das vor allem der Speicherbedarf der beiden Systeme sich so sehr unterscheidet! Nachfolgend also die Ergebnisse des Benchmarks – Diese wurden auf meiner Windows Maschine ausgeführt, daher die hohen Laufzeiten 😉 (Linux hätte es sicherlich weitaus schneller geschafft, ggf. mache ich mal den Test mit einer VM). Template-Engine Assign Template-Engine Zeiten Speicherverbrauch plain PHP 608 µs 11.77 KB RainTPL 2551 µs 212.45 KB Mustache 6724 µs 307.84 KB Smarty 8730 µs 1010.78 KB Twig 7378 µs 543.67 KB Stellen wir die Laufzeit und Speicherauslastung grafisch dar, erhalten wir folgende Diagramme (je kleiner desto besser). Template-Engine Loop Template-Engine Zeiten Speicherverbrauch plain PHP 561 µs 40.24 KB RainTPL 2272 µs 239.2 KB Mustache 5734 µs 295.93 KB Smarty 8497 µs 1005.27 KB Twig 8945 µs 554.24 KB Stellen wir die Laufzeit und Speicherauslastung grafisch dar, erhalten wir folgende Diagramme (je kleiner desto besser). Die „PHP“ Daten beziehen sich übrigens auf ein einfaches PHP Skript mit echo und foreach-Schleifen und bildet somit quasi die Referenz-Werte. Das Fazit und Ranking Wie bereits oben geschrieben sehen wir, das RainTPL und Mustache sowohl die schnellsten als auch Speicher-schonendsten sind. Zumindest trifft dies bei einer ganz rudimentären Einbindung zu (ohne großartige PHP Cache-Systeme oder Extensions wie z.B. die C-Extension von twig). Im echten Betrieb wird sicherlich eine Menge mehr an Methoden angewandt um möglichst alles aus den Template-Engines rauszuholen! 1. RainTPL Wer eine einfache Template-Engine benötigt um saubere Templates zu entwickeln und keine außergewöhnlichen Features benötigt oder sich nicht in endlosen OOP-Strukturen verlieren möchte wird sicherlich mit RainTPL am besten beraten sein: Das System ist schlank, schnell, einfach einzubinden und bedient sich einer einfachen Syntax. 2. Mustache Mustache dürfte mit Abstand die einfachste bzw. wenigste Syntax bieten und ist für sehr viele Programmiersprachen verfügbar! Vor- und Nachteil zugleich: Mustache „zwingt“ den Entwickler zu einer sauberen Aufbereitung seiner Daten. 3. Twig Die Template-Engine der symfony-Machern hat es in sich: Das System bietet extrem viele Features und ist durchgängig erweiterbar (durch massive OOP-Nutzung). Twig kann aber grade für „Neulinge“ sehr kompliziert sein da hier eine sehr umfangreiche Syntax genutzt wird, die man sich tatsächlich erst mal aneignen muss (sofern man von den Features Gebrauch machen möchte). 4. Smarty Smarty, eine der ältesten und verbreitetsten Template-Engines, landet leider auf dem vierten Platz. Die Syntax dürfte wohl die bekannteste sein und die anderen Systeme maßgeblich inspiriert haben – Doch das Alter macht sich bemerkbar. Die „Konkurrenz“ (wenn man so will) schläft nicht und punktet vor allem durch schnellere Laufzeiten als auch geringeren Speicherbedarf. Smarty bietet uns dafür mit Sicherheit die größte Community, die meisten Plugins und die beste Lokalisierung. Die meiste Erfahrung habe ich persönlich mit Smarty, da ich es quasi täglich im Beruf benutze. Die Template-Engine lässt sich sehr gut erweitern und bietet selbst für Web-Applikationen eine solide Grundlage! Die Performance ist allerdings -grade bei den älteren Versionen- nicht sehr berauschend. Mit diesen letzten Sätzen möchte ich diese Reihe abschließen und mich ab nächster Woche wieder anderen Themen widmen. Unter anderem habe ich mir vorgenommen die Micro Frameworks etwas ausführlicher vorzustellen und ggf. einen weiteren Erfahrungsbericht zu ProcessWire zu schreiben. Die Themen werden mir also nicht so schnell ausgehen – Euch da draußen wünsche ich eine erfolgreiche Woche und einen schönen Feiertag!