funktionen und klassen in lib vs dll



  • hallo leute

    gibt es beim benutzen von klassen bzw funktionen in dlls und libs einen geschwindigkeitsunterschied ? oder laeuft das gleich schnell ab ?

    wie siehts da mit inline funktionen aus ?

    Meep Meep



  • naja, libs werden halt normalerweise mit reingelinkt. dlls kannst einfach austauschen ohne neu zu kompilieren



  • Im Idealfall verhalten sich Aufrufe in statische Libs wie Funktionsaufrufe. Bei DLL's ist etwas Overhead von Nöten, um die Adressen der Funktionen zu lokalisieren.



  • Librarian schrieb:

    Im Idealfall verhalten sich Aufrufe in statische Libs wie Funktionsaufrufe. Bei DLL's ist etwas Overhead von Nöten, um die Adressen der Funktionen zu lokalisieren.

    ist der overhead dann einmalig, also beim ersten funktiosaufruf ? oder bei jedem ?
    falls bei jedem: koennte man da den overhead wegbekommen, wenn man die adresse in nem funktionszeiger speichert und darueber die funktion aufruft ?

    Meep Meep



  • Meep Meep schrieb:

    ist der overhead dann einmalig, also beim ersten funktiosaufruf ? oder bei jedem ?

    Bzgl. DLLs unterscheidest du zwischen load time und run time dynamic linking. Beim load time linking werden Funktionen wie externe Funktionen aus anderen Modulen behandelt. Dh, beim Programmstart wird einmalig die "Verbindung" zu den Funktionen hergestellt, ansonsten entsteht kein Overhead. Beim run time linking machst du das sozusagen manuell. Bevor eine Funktion benutzt wird, holst du dir die Adresse mit entsprechenden Funktionen und speicherst diese in einem Funktionszeiger. Auch hier entsteht kein weiterer Overhead. Der einzige Nachteil besteht darin, dass keine Funktionen inline behandelt werden können.


Anmelden zum Antworten