Diskussion:Dynamische Optimierung

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Dynamische Optimierung umfasst einen wesentlich weiteren Radius und ich würde es generell mit:

Treffen von Entscheidungen bei der Codegenerierung anhand von Laufzeit-Daten des zu kompilierenden Codes.

So fällt z.B. bei der Hotspot-Server unter diesen Aspekt:

- "Statische Optimierungen" zur Laufzeit nur an "heissen" Stellen - Devirtualisieren von Methoden (und fall-back prüfung) - Exception-Generierung (ist bekannt dass der Stack-Trace niemals ausgewertet wird, wird keiner generiert) - Array-Bounds check Eliminierung - lock coarsing (zusammenfassen vielier locks zu einem lock/unlock) - und vieles mehr das ich einfach nicht kenne


Ich würde es sogar noch weiter fassen und die veränderlichen Laufzeitdaten der darunterliegenden Hardware miteinbeziehen:

" Wenn sich mehrere Rechenkerne gemeinsam Caches und Speicher teilen, ist die Cachenutzung und Verteilung der Bandbreiten veränderlich. Dynamische Optimierung kann hier eine Durchsatzverbesserung erreichen. Insbesondere sind die folgenden Parameter zu berücksichtigen:

- Latenzen zum Cache und Hauptspeicher

- dem Programm aktuell zur Verfügung stehende Speicherbandbreite

- dem Programm aktuell zur Verfügung stehende Cachegrösse und effektive Assoziativität

Beispiele (speziell bei SMP Systemen):

a) Abhängig von den auf einem SMP ablaufenden Programmen steht mehr oder weniger Cache und Speicherbandbreite zur Verfügung je nachdem wie sich die anderen Programme momentan verhalten. Steht viel Cache zur Verfügung lohnt sich beispielsweise eine LUT (Tabelle), bei weniger Cache ist es effizienter die Werte neu zu berechnen.

b) Abhängig davon wo sich die anderen Threads in einem SMP befinden, sind andere Mechanismen zur Kommunikation und Synchronisierung effizienter. Ein Laufzeitsystem kann also dynamisch die Interthreadkommunikation anpassen.

c) Eine Software kann mehr oder weniger aggressiv in Threads zerlegt werden, wobei mit zunehmender Threadanzahl die Ausführungseffizienz sinkt. Ein Laufzeitsystem kann auf Vielkernsystemen die Zerlegung auf maximalen Durchsatz hin optimieren.

d) Hilfsthreads können die Ausführung beschleunigen wenn Rechenkerne dafür frei sind. Ein Laufzeitsystem kann dynamisch die Anzahl der Hilfsthreads auf die aktuelle Auslastung mit Nutzthreads anpassen um zu verhindern, dass allzu aggressive Optimierung des einen Tasks andere ausbremst. "

Bedeutungspektrum Operations Research vernachlässigt

[Quelltext bearbeiten]

Dynamische Optimierung ist auch ein Teilbereich des Operations Research und wird vom gleichnamigen Artikel sogar hierher verlinkt. Dazu fehlt hier allerdings bisher jeder Bezug.