Tach!
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.
So meinte ich das nicht. Das Laden von der Festplatte ist bei häufig verwendeten Dateien bereits durch den Dateisystem-Cache des Betriebssystems entschärft. Das spart keine Ausführung von PHP-Code ein. Zudem arbeitet PHP nicht so, dass ein permanenter Teil stets geladen wäre, in dem man solche Dinge zwischenspeichern könnte. PHP muss also für jeden Request einen Dateisystemzugriff ausführen, wenn es ein Template laden möchte. Lediglich im Idealfall wird der durch den Dateisystem-Cache beschleunigt. Mein Vorschlag bezog sich auch nicht auf veränderliche Daten, sondern auf das was nicht ständig gerendert werden muss, weil es über längere Zeit für jeden Request gleich bleibt. Diese Arbeit soll das Cachesystem einsparen, weil das weniger Zeit verbraucht, als mit lediglich einer anderen Codestruktur eingespart werden kann. Bei beispielsweise einem CMS mit individueller Syntax, die vor dem Ausliefern erst nach HTML transformiert werden muss, ergibt sich oftmals keine Notwendigkeit, diesen Vorgang stets auszuführen, sondern es reicht, nur bei Bearbeitungsvorgängen eine neue Version in den Cache zu legen. In dem Fall fällt es nicht nur nicht ins Gewicht, wenn der Code theoretisch überflüssige Funktionsaufrufe enthält, die quasi nur der besseren Wartbarkeit dienen. Es ist auch im Ergebnis schneller als Code, der aus Optimierungsgründen auf die Separierung in Funktionen verzichtet.
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.
Auch das erspart keine Codeausführung. Diese Aussage ist nicht falsch, solange man PHP mit einen Opcode-Cache betreibt, geht aber am Thema komplett vorbei.
Im Übrigen sind Design Patterns nicht das Backbone der Programmierung, nicht die Bohne sind sie das.
Natürlich nicht. Sie sind nur Vorschläge, wie man Dinge auf bereits bewährte Weise lösen kann. Das darf man selbstverständlich ignorieren und seine eigenen Erfahrungen von Null beginnend sammeln.
dedlfix.