Sven Rautenberg: Template: Caching vs. Compiling

Beitrag lesen

Moin!

Eine Variante werde ich aus Performance-Gründen wohl auf alle Fälle verwenden, die Frage ist nur welche. Was könnt ihr mir empfehlen? Was ist tendenziell schneller?

Optimiere nichts, was du nicht messen kannst - das ist die allerwichtigste Regel.

Programmiere immer nur die einfachste Lösung - auch ziemlich bedeutend. Man kann jedes Problem beliebig kompliziert lösen, und man kann auch unendlich viele Features einbauen, die man "vielleicht mal irgendwann brauchen kann". Tu das nicht, programmiere, was aktuell benötigt wird. Denn wenn du was komplex-aufwendiges bräuchtest, würdest du ja schließlich Smarty nehmen und ggf. noch erweitern - und wärst hinsichtlich des Compilings jetzt schon fertig.

Und nur mal so zum Nachdenken: Wenn du einfach nur eine schlichte Template-Engine ohne Caching oder Compiling baust, hast du bei jedem Aufruf nur den Code für das Template-Umsetzen zu parsen. Wenn du Compiling und Caching einbaust, wird deine gesamte Engine aufwendiger zu parsen, kostet also so oder so mehr Zeit. Außerdem entstehen Caching- oder Compiling-Files nicht von alleine, und irgendwann muß entschieden werden, ob der ganze Vorgang neu durchgeführt werden muß, oder ob der Cache- bzw. Compilat-Inhalt noch geht.

Dieser Verwaltungsoverhead kann mit Pech aufwendiger werden, als wenn man ihn komplett wegläßt und einfach jedes Mal das Template neu parst. Deshalb: Erst einmal Messen können, wie aufwendig ein Vorgang eigentlich wirklich ist, ist unabdingbar.

Denn die Zeit ist nicht unbedingt der einzige Faktor bei einer Optimierung. Sie ist natürlich entscheidend, wenn du den einzelnen Request auf dem Server betrachtest. Aber was macht dein Gesamtsystem, wenn es unter Last kommt und mehrere tausend Requests pro Sekunde verarbeiten muß, mit mehreren hundert Prozessen parallel? Deine optimierte Version braucht dann vielleicht soviel mehr Speicher, dass der Server ständig swappen muß, und als Gesamtsystem viel langsamer wird.

- Sven Rautenberg

--
"Love your nation - respect the others."