Moin Michael,
Was soll ich sagen außer einem klaren Jaein. :-)
Dynamische Codeoptimierung setzt ja vorraus, daß zur Laufzeit des Programms eine Art Optimizer läuft der natürlich für seine Arbeit auch gewissen einen Anteil an Rechenleistung benötigt. Und die muss ja zunächst einmal rausgearbeitet werden. Das heißt die Optimierung muss mindestens so gut sein, daß die dadurch gewonnene Rechenzeit den Optimizer mit versorgen kann.
Ein positives Saldo als Ergebnis ist natürlich eine (implizite) Zielvorgabe für derartige Bemühungen.
Kommt auch sehr darauf an, wie oft ein optimiertes Codestück aufgerufen wird. Bei einmaligem Aufruf beispielsweise hast Du nur Aufwand aber kein nutzen. Und unglücklicherweise läßt sich auch schwer vorhersagen, wie oft ein bestimmter Codeabschnitt aufgerufen wird oder auch nicht (ausser Du hast beispielsweise eine Schleife mit konstantem Start und Endwert oder dergleichen).
Gerade dieser Aspekt kann ja nur zur Laufzeit dynamisch behandelt werden.
Zudem können geänderte Bedingungen vorherige Optimierungen neutralisieren oder sogar ins negative abrutschen lassen.
Das müsste eben zur Laufzeit verhindert werden. Logisch, oder? ;-))
Das Ganze ist ein recht komplexes Feld, so dass sich eigentlich nur sagen läßt: Es kommt darauf an.
Man wird einfach Erfahrungen sammeln müssen und letzlich ist es auch eine Frage, wie gut Optimizer in Zukunft werden können.
Man kann ja 'einfach' die Prinzipien der Prozessoroptimierungen in den virtuellen Prozessor abstrahieren ;-)
Viele Grüße,
Martin Jung