M
@audacia und rapso: ich weiß grad echt nicht genau, wie der Code ausschaut. Das ist etwas, was ich vor drei Jahren geschrieben habe und demnächst wieder angehen werde. Deswegen habe ich mich gestern abend schon mal ein bisschen darauf eingestimmt, den Code habe ich mir aber nicht mehr angeschaut.
So wirklich gleiche Signaturen haben die Funktionen sicher nicht, es gibt eben mindestens drei Aufgaben in der Schleife, Filtern, Verarbeiten und Nachbearbeiten. Aber wie das genau ausgeschaut hat, weiß ich jetzt nicht.
Der Hintergrund von dem ganzen ist mehr oder weniger, dass ziemlich viel Code vereinheitlicht wurde. Gab viele ähnliche Klassen mit vielen Sonderfällen. Jetzt gibts nur noch eine Klasse und keine Sonderfälle mehr, wird alles durch eine der drei Komponenten erschlagen. Das ganze ist aber etwas langsamer, als die alte Variante, weil die Sonderfälle selten sind und "nur Verarbeiten" der Standardfall ist. Jetzt wollen wir das ganze wieder etwas optimieren. Ist nicht nur die Stelle und nicht nur die Schleife, man kann da schon einiges optimieren. Mir ist nur eingefallen, dass diese Schleife sich ständig um seltene Sonderfälle kümmert und ich hab mich gefragt, was es da für elegante Lösungen geben könnte.
Mir ist schon klar, dass es an der Stelle nur Mikrooptimierungen sind, hab ja gleich geschrieben, dass das nicht wichtig ist. Mir gehts hier wirklich nur um technische Ideen.
@TGGC: klar, kanns mir aber noch nicht so wirklich vorstellen.
@hustbaer: Ok, das sind wahrscheinlich wirklich Mikrooptimierungen Das wird sich hier nicht lohnen. Ich bin eigentlich hauptsächlich auf das ganze gekommen, weil ich spontan die Idee hatte, dass es sich lohnen könnte, eine kleine VM zu schreiben, in die man nur die Befehle reinschmeißt, die man wirklich braucht, und die dann mit wenig Overhead perfekt konfiguriert durchläuft. Aber die Idee habe ich eigentlich gleich wieder verworfen, weil der Overhead eigentlich gar nicht so klein sein kann, dass sich das tatsächlich lohnen würde. Aber vielleicht hat mal schon mal jemand was ähnliches gemacht, würde mich interessieren.
nochmal @rapso: und im Endeffekt ist es im Moment auch das, was ich dann wahrscheinlich versuchen werde. Ich werd mal schauen, dass ich alle Eingabedaten und das Ergebnis in ein Objekt verpacke und das durch die Filterkette durchreiche. Also sowas wie Pipes & Filters. Wobei mir irgendwie eher der Begriff "function chain" vorschwebt.