Hallo zusammen
Zur Zeit kann in den Modulen für die Ausgabe nur ein Code eingegeben werden. Bei Modulen, welche mit Modulwiederholungen arbeiten (MrList / ContentFlex/ ...) bedeutet das, dass Funktionen und Klassen die nur einmal definiert werden müssten so oft im Code aufgeführt werden wie die Anzahl der Wiederholungen. Dies führt zu einem viel zu grossen Ressourcenverbrauch, wenn viele Wiederholungen verwendet werden.
Ich schlage vor das die Module um 2 Output-Bereiche erweitert werden. Einen welcher vor der Ersten Wiederholungen ausgeführt wird und ein Bereich der nach der letzten Wiederholung ausgeführt wird. Aus meiner Sicht könne so die Module einiges Einfacher aufgebaut werden und der Speicherverbrauch und die Geschwindigkeit kann deutlich verbessert werden.
Als Anwendungsbeispiel könnte im ersten Bereich eine Klasse definiert und instanziert werden. In jeder Wiederholung kann mit der Klasse gearbeitet werden, z.B. Daten abgelegt werden. Im letzte Bereich kann mit den Daten in der Klasse z.B. eine Seiten-Navigation ausgegeben werden.
Folgendes Beispiel soll den Nutzen aufzeigen:
Bei MrList gibt es einen Bereich im Modul welcher nur bei der letzten Wiederholung benötigt wird. Wenn ich diesen Teil des Moduls in eine Datei ausgelagere und nur bei der letzte Wiederholung einbinde (dies entspricht der Simulation des FR), kommt der Speicherverbrauch überproportional zurück.
Ich habe weniger als 19kByte von MrList in eine externe Datei verlagert. Bei 10 Wiederholungen (Einträgen) von Mr List hatte ich folgenden Speicherverbrauch für die gesamte Seite:
In Datei ausgelagert und erster Aufruf (nichts im Cache)
executiontime: ( 0.4731)
memory allocated: ( 4598k)
peak of memory allocated: ( 6507k)
Original und erster Aufruf (nichts im Cache)
executiontime: ( 0.5689)
memory allocated: ( 5604k)
peak of memory allocated: ( 8282k)
In Datei ausgelagert und alles im Cache
executiontime: ( 0.1420)
memory allocated: ( 3532k)
peak of memory allocated: ( 5272k)
Original und alles im Cache
executiontime: ( 0.1585)
memory allocated: ( 4147k)
peak of memory allocated: ( 6333k)
Das zeigt, dass ein Auslagern von 19k bei 10 Wiederholungen nicht nur die Erwarteten 190k weniger Speicher verbraucht, sondern 1800k. Also 100k weniger Speicherverbrauch pro Wiederholung. Auch die Geschwindigkeit steigt um 10-20%. Bei noch mehr Wiederholungen ist der Geschwindigkeitszuwachs noch grösser
Gruss
Mistral