Wie schnell sind DLL Funktionsaufrufe?
-
Hi
Ich hab vor eine Art Effektsystem in mein Program einzubauen, sodass noch nachträglich Effekte via DLLs hinzugefügt werden können. So ähnlich, wie Winamp das mit den Visualisierungs-Plugins macht.
Das hieße, dass jeder einzelne Effekt seine eigene DLL hätte. Beim Start des Programms würden dann alle DLLs mit LoadLibrary geladen werden.
Ist nur die Frage, ob es einen Geschwindigkeitsunterschied macht, ob ich eine Funktion in einer DLL aufrufe, oder eine direkt aus meinem Programm.Ich würde also ca. 30 - 50 DLLs haben, und würde ständig funktionen aus diesen DLLs aufrufen. Würde es da Geschwindigkeitseinbußen geben, oder ist das Problemlos?
Jan.
-
Das funktioniert problemlos. Dei einzigen Einbußen bekommst Du von Seitenfehlern, da der Code im Speicher dann doch recht weit gestreut ist.
IMO solltest Du Dir nur überlegen, ob Du wirklich alle Dlls gleichzeitig geladen haben musst. Sicherlich ist es ratsam, die betroffenen Dlls erst dann zu laden, wenn sie auch benötigt werden.
-
Was genau meinst du denn mit "Seitenfehlern" ?
-
Wenn der Code, der ausgeführt werden soll, in nicht eingelagerte Speicherseiten gemappt ist, wird eine Exception geworfen (das meinte ich mit Seitenfehler). Das System versucht dann, die entsprechenden Abschnitte einzulagern. Dieser gesamte Vorgang benötigt dann natürlich auch etwas Zeit.