Verwendung von Lookup-Tabellen (LUT) zur Performance-Verbesserung von Programmen
Das Prinzip
Sind zur Bereitstellung von Ausgabewerten Berechnungen notwendig und handelt es sich um zeitkritische Anwendungen, so kann überlegt werden, ob Teile dieser Werte nicht vrausberechnet und als Tabelle bereitgestellt werden könnten.
Ein Speicherzugriff auf ein Array ist in der Regel wesentlich schneller, als irgendwelche mathematischen Operationen. Der Nachteil dieser Technik liegt in dem größeren Speicherbedarf der Anwendung.
Ein Zwischenstadium zwischen Lookup-Table und direkter Berechnung liegt in der Generierung und Verwendung von Lookup-Funktionen. Sind die zu bestimmenden Werte durch einfach zu berechnende Funktionen anzunähern, z.B. durch Polynome, kann dies zu einer erhöhten Berechnungsgeschwindigkeit führen, ohne mehr Arbeitsspeicher zu verbrauchen. Im einfachsten Fall werden die Werte zwischen zwei Lookup-Einträgen interpoliert. Anwendungsfälle: Ersatz von Simulationen durch Berechnungsfunktionen. Der Nachfolgezustand eines Einfachpendels ist beispielsweise eindeutig bestimmt durch seinen aktuellen Zustand und einer eventuell einwirkenden äußeren Kraft. Man könnte in einer gewissen Rasterung den Folgezustand zu allen erlaubten Kombinationen der Wirkgrößen bestimmen und statt der Simulation verwenden.
Interpolation
Ein einfacher naheliegender Weg die Werte einer mehrdimensionalen Lookup-Tabelle zu interpolieren, besteht darin die benachbarten Tabellenwerte einer aktuellen kontinuierlichen Eingangskombination mit ihrem euklidischen Abstand zu dieser Eingangskombination zu gewichten.
|
Bild 0-1: Interpolation eines Ausgangs resultierend aus der Lage des Eingangsvektors relativ zu bekannten Stützstellen.
Bild 0-2: Räumliche Visualisierung eines Ausgangs, der von drei Eingängen abhängt.