Ich habe bis vor kurzem auch immer Smarty genommen. Für reine Internetseite ist es wunderbar. Leider ist Smarty sehr langsam, wenn man das caching nicht benutzen kann. Bei einem Projekt hattte eine Administrationsseite fast 200 Sekunden gebraucht, bis die Seite von Smarty gerendert wurde

Echt problematisch wird es wohl, wenn man längere Inhalte mit Schleifen und if else Abfragen generiert.
Ich benutze jetzt eine kleine Klasse, die PHP Code in den Templates ausführt.
Bevor jetzt einige aufschreien: "Dann braucht man keine Template Klasse":
Sinn und Zweck einer Templateklasse ist es meist die Logik von der Darstellung zu trennen. Insofern kann in einem Template auch PHP Code sein, solange dieser nur der Darstellung dient (z.B. mit Schleifen eine Tabelle baut). Das ist ne ganze Ecke schneller als jede Template Engine. Probier's aus. Übrigens, diese Klasse hat weitgehend eine Smartykompatible API und unterstützt sogar Plugins
Es gibt wenige Einzelfälle, in denen man kein PHP im Template zulassen möchte. Z.B. als ASP der ein Gästebuch oder eine andere Applikation mit freien Templates zulässt.