Devirtualisierung
Devirtualisierung ist ein Optimierungsverfahren in Compiler- und Laufzeitsystemen, das darauf abzielt, virtuelle Funktionsaufrufe durch direkte Aufrufe zu ersetzen, wenn der konkrete Typ des Zielobjekts bekannt ist oder zuverlässig bestimmt werden kann. Der Begriff beschreibt die Umwandlung von dynamischer Dispatch-Logik hin zu direkter oder inline-Dispatch, um Laufzeitkosten zu reduzieren.
Praktisch wird Devirtualisierung durch verschiedene Techniken umgesetzt. Statische Analysen wie Class Hierarchy Analysis (CHA) oder Punkte-zu-Analyse
Anwendungsbereich und Nutzen: Devirtualisierung kommt in Sprachen mit virtuellem Dispatch zum Einsatz, etwa C++, Java oder
Herausforderungen: Conservative Analysen können nicht alle virtuellen Aufrufe devirtualisieren; dynamische Merkmale wie Reflection, dynamisches Laden oder
Siehe auch: vtable, Inline-Caching, Class Hierarchy Analysis, Profile-Guided Optimization, Virtual Dispatch.