Code zur Laufzeit ändern
-
Hallo, ich habe hier einen Code der etwas berechnen soll.
Dabei verwendet er, je nachdem ob die Plattform das unterstützt, entweder Funktionen die die SIMD Instruktionen (SSE Einheiten) nutzen oder die Features der Grafikkarte (CUDA) oder einfach die normalen CPU Recheneinheiten (i386).
D.h. ich habe 3 Funktionen die das selbe berechnen, aber auf den verschiedenen Recheneinheiten:
1. SIMD - SSE Einheiten
2. CUDA
3. normale CPU & FPU (i386)Tja und da diese Funktionen mehrmals aufgerufen werden müssen, möchte ich nur
einmal zu Beginn des Programms bestimmen, welche Funktion verwendet werden soll.D.h. ich brauche so eine Art Weiche die nur einmal gestellt werden muß.
Momentan habe ich vor jedem Aufruf eine IF-Abfrage die die passende Funktion anhand einer zuvor gesetzten Variable aussucht und diese If-Abfrage würde ich gerne vermeiden da sie Rechenzeit kostet.Welche Funktion festgelegt wird, wird dabei durch die gesetzte Variable bestimmt und die erhält ihren Wert beim Programmstart, bei dem die Features des Rechners abgefragt werden.
Wie kann ich also zur Laufzeit eine bestimmte Funktion festlegen?
Geht das vielleicht mit Zeigern auf eine Funktion?
D.h. ich nehm ne Zeigervariable und speicher da die Adresse der auszuwählenden Funktion und diese Zeigervariable setze ich ganz am Anfang, so daß diese nur einmal verwendet werden muß.
Geht das so?
-
Die Sprache ist übrigens C.
Für C++ würde ich das gerne aber auch wissen, falls es da Unterschiede gibt.
-
Coderdau² schrieb:
Geht das vielleicht mit Zeigern auf eine Funktion?
D.h. ich nehm ne Zeigervariable und speicher da die Adresse der auszuwählenden Funktion und diese Zeigervariable setze ich ganz am Anfang, so daß diese nur einmal verwendet werden muß.
Geht das so?ja
-
Coderdau² schrieb:
Geht das vielleicht mit Zeigern auf eine Funktion?
D.h. ich nehm ne Zeigervariable und speicher da die Adresse der auszuwählenden Funktion und diese Zeigervariable setze ich ganz am Anfang, so daß diese nur einmal verwendet werden muß.
Geht das so?ja, das ist prima.
-
Danke, dann werde ich das so machen.