Adaptive Optimierung ist eine Technik der Informatik , die Teile eines Programms dynamisch anhand des aktuellen Ausführungsprofils neu kompiliert. In einer einfachen Implementierung kann ein adaptiver Optimierer lediglich einen Kompromiss zwischen Just-in-Time-Kompilierung und der Interpretation von Anweisungen treffen . Auf einer anderen Ebene kann adaptive Optimierung lokale Datenbedingungen nutzen, um Verzweigungen zu optimieren und Inline-Expansion zu verwenden , um die Kosten von Prozeduraufrufen zu senken.
Betrachten wir eine hypothetische Banking-Anwendung, die Transaktionen nacheinander verarbeitet. Diese Transaktionen können Schecks, Einzahlungen und eine Vielzahl weiterer, weniger gängiger Transaktionen umfassen. Bei der Programmausführung können die tatsächlichen Daten beispielsweise die Einlösung von Zehntausenden von Schecks beinhalten, ohne dass eine einzige Einzahlung oder ein Scheck mit einer betrügerischen Kontonummer verarbeitet wird. Ein adaptiver Optimierer würde Assembler-Code kompilieren, um diesen häufigen Fall zu optimieren. Würde das System anschließend stattdessen Zehntausende von Einzahlungen verarbeiten, würde der adaptive Optimierer den Assembler-Code erneut kompilieren, um den neuen häufigen Fall zu optimieren. Diese Optimierung kann das Inlining von Code beinhalten.
Beispiele für adaptive Optimierung sind HotSpot und das Dynamo-System von HP . [ 1 ]
In manchen Systemen, insbesondere der Java Virtual Machine , lässt sich die Ausführung eines Bytecode- Abschnitts nachweislich umkehren. Dies ermöglicht es einem adaptiven Optimierer, riskante Annahmen über den Code zu treffen. Im obigen Beispiel könnte der Optimierer annehmen, dass alle Transaktionen Schecks sind und alle Kontonummern gültig sind. Sollten sich diese Annahmen als falsch erweisen, kann der adaptive Optimierer in einen gültigen Zustand zurückkehren und die Bytecode-Anweisungen anschließend korrekt interpretieren.
Siehe auch
Referenzen
Externe Links
- CiteSeer für „Adaptive Optimization in the Jalapeño JVM (2000)“ von Matthew Arnold, Stephen Fink, David Grove, Michael Hind und Peter F. Sweeney. Enthält Links zum vollständigen Artikel in verschiedenen Formaten.