geschwindigkeit einer dll



  • hallo,

    ich möchte einige teile eines programmes von mir in eine dll auslagern, um a das hauptprogramm klein zu halten und b. die codepflege zu erleichtern.

    nun habe ich mal gelesen, dass ein befehlsaufruf einer dll länger dauern würde.

    stimmt das ?

    bei dem programmteil, den ich auslagern möchte, handelt es sich ausgerechnet um den teil, bei welchem die ausführungsgeschwindigkeit extrem wichtig ist, da sehr viele aufrufe innerhalb kürzester zeit vom hauptprogramm zur dll erfolgen (renderaufrufe in opengl).

    macht es dann überhaupt sinn ? sollte man da lieber auf die programmgrösse verzichten und auf eine statische lib zurück greifen, damit der code im hauptprogramm enthalten ist ?

    wäre nett, wenn ihr mir also sagen könntet, ob aufrufe von befehlen einer dll tatsächlich langsamer sind!

    gruß



  • RML schrieb:

    nun habe ich mal gelesen, dass ein befehlsaufruf einer dll länger dauern würde.

    Warum sollte das länger dauern??? Ein "call" ist und bleibt ein "call". Da spielt es keine Rolle ob der in einer DLL oder in der gleichen EXE ist.

    Der einzige "Nachteil" (den es aber auch erst seit VC2005 gibt), ist dass man kein "whole programm optimization" mit der DLL machen kann. Aber da es diese Option bisher nicht gab ist auch ein Aufruf in eine DLL bisher nicht langsamer.
    Seit neuestem kann jetzt halt der Linker/Compiler besser optimieren, wenn die Programmteile sich im gleichen Modul befinden...

    RML schrieb:

    macht es dann überhaupt sinn ? sollte man da lieber auf die programmgrösse verzichten und auf eine statische lib zurück greifen, damit der code im hauptprogramm enthalten ist ?

    Das musst Du selber entscheiden... wenn es in sich abgeschlossene Module sind, kann es sinn machen...

    PS: Was hat das mit C++/CLI zu tun?



  • dank dir für die antwort:-) ich werde es wohl mal mit der dll probieren.

    ich nutze vs net professional 2002 zum compilieren. wie wirkt sich das optimieren mit dem compiler aus. du hast .net 2005 erwähnt.

    PS: Was hat das mit C++/CLI zu tun?

    nichts. ich hatte versehentlich im falschen bereich gepostet.
    vieleicht kann es ja jemand verschieben.



  • Jochen Kalmbach schrieb:

    RML schrieb:

    nun habe ich mal gelesen, dass ein befehlsaufruf einer dll länger dauern würde.

    Warum sollte das länger dauern??? Ein "call" ist und bleibt ein "call". Da spielt es keine Rolle ob der in einer DLL oder in der gleichen EXE ist.

    weil die exe zur compilezeit die adressen der dll-funktionen nicht kennt. also arbeitet sie mit sprungtabellen (ein seicherzugriff mehr pro aufruf) oder sowas. oder macht der lader das alles schon ins reine?



  • Bei VS2002/2003 gibt es keinen (messbaren) Unterschied zwischen "DLL" und "in der EXE"



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Compiler-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Bei VS2002/2003 gibt es keinen (messbaren) Unterschied zwischen "DLL" und "in der EXE"

    ahhh danke ! schön zu hörn 🙂



  • Sei dir aber bewusst dass Funktionen die du in eine DLL packst nicht mehr "inline" in die EXE eingebettet werden können! bei funktionen, die nur sehr kurze Ausführungszeit haben, sollte der Unterschied schon sehr bemerkbar sein.


Anmelden zum Antworten