moin,
Die meiste Ersparnis bekommst du nicht, indem du die Funktionsaufrufe minimierst, sondern indem du generell schaust, welche Arbeiten vermeidbar sind. Eine Seite (oder große Teile davon) muss zum Beispiel nicht jedes Mal neu erstellt werden, wenn sich deren Inhalt nicht ändert. Es bietet sich dann an, noch mehr Code in Form eines Caches auf das Problem zu werfen, wenn sich durch den einen Griff in den Cache eine aufwändige Neugenerierung vermeiden lässt. Der erste Aufrufer hat eine geringfügig längere Ausführungszeit als ein System ohne Cache, weil dieser ebenfalls noch bedient werden muss, alle anderen bekommen aber durch den Cache einen deutlichen zeitlichen Vorteil.
So isses. Der erste Aufrufer muss z.B. eine Methode bemühen um das Template für den Body ggf. aus dem Dateisystem zu holen. Beim nächsten Aufruf und allen Folgenden jedoch ist das Template direkt per RAM adressierbar. Lediglich die Werte die da reinzurendern sind können von Request zu Request unterschiedlich sein.
Darüber hinaus bleibt ja auch der Code im Hauptspeicher und zwar kompiliert. Egal ob das Klassen sind oder einzelne Methoden, das Laden derer aus dem Dateisystem muss nur einmal erfolgen.
Im Übrigen sind Design Patterns nicht das Backbone der Programmierung, nicht die Bohne sind sie das.
MfG