Vor gut drei Monaten habe ich die PHP-Template-Engines SithTemplate und Twig mit XHProf untersucht. Nun ist es Zeit für ein Update – zum einen treten die neuen Versionen gegeneinander an, zum anderen betritt ein neuer Mitspieler namens h2o die Arena der PHP-Template-Engines
mit Django-kompatibler Syntax.
Für die Grundlagen verweise ich an dieser Stelle auf den damaligen Blog-Eintrag „Profiling PHP mit XHProf am Beispiel der Template-Engines SithTemplate und Twig“. Die Voraussetzungen sind identisch geblieben – ein einfaches Template, zwei Ersetzungen, eine Ausgabe eines Arrays mit 100 Elementen.
Die Template-Engines wurden in der Standard-Installation betrieben, jeweils ist das File-Caching aktiviert. Alle Template-Engines erzeugen beim ersten Aufruf aus Template eine oder mehrere PHP-Dateien. Die Template-Engines sind so konfiguriert, dass dieser Schritt nur dann erneut durchgeführt wird, wenn sich die Template-Quelldatei geändert hat. Ansonsten wurden keine weiteren Optimierungen durchgeführt, etwa
die Verwendung von Memcache oder APC anstatt des Dateisystems zur Speicherung der erzeugten Dateien.
Die Ergebnisse:
SithTemplate 0.9.2 | SithTemplate 1.1 | Twig 0.9.9 | Twig 1.0.0-RC2 | h2o 0.4 | |
Total Incl. Wall Time (microsec): | 8,188 microsecs | 5,504 microsecs | 11,564 microsecs | 13,341 microsecs | 27,411 microsecs |
Total Incl. CPU (microsecs): | 8,000 microsecs | 4,001 microsecs | 12,001 microsecs | 12,001 microsecs | 28,002 microsecs |
Total Incl. MemUse (bytes): | 1,208,040 bytes | 686,384 bytes | 1,489,584 bytes | 1,140,056 bytes | 1,541,408 bytes |
Total Incl. PeakMemUse (bytes): | 1,120,024 bytes | 657,296 bytes | 1,463,320 bytes | 1,127,768 bytes | 1,510,752 bytes |
Number of Function Calls: | 122 | 85 | 598 | 1459 | 3790 |
Die Ergebnisse sprechen erneut für sich. SithTemplate konnte in der aktuellen Version noch zulegen, während sich Twig gegenüber der letzten Version sogar mehr Zeit lässt bzw. mehr Ressourcen verbraucht. h2o landet abgeschlagen auf dem letzten Platz.
Leider wird SithTemplate seit kurzem nicht mehr aktiv weiterentwickelt, da sich der Autor von der PHP-Programmierung verabschiedet hat. Die Lizenz ist jedoch freier denn je – es handelt sich um die „Unlicense“, früher als Public Domain bezeichnet. Insofern spricht nichts dagegen, dass sich einige Enthusiasten zur Weiterentwicklung finden – alternativ lassen sich etwaige Fehler auch eigenständig beheben.