Hallo Welt
Ich stehe mal wieder auf dem Schlauch. Mein Programm ist folgendermassen aufgebaut:
Nun habe ich mir überlegt, dass das ja ineffizient sein müsse, da ich die Funktionen jedes Mal für jedes Plugin neu kompilierte.
Also wäre die logische Konsequenz, die Hauptfunktionen in eine haupt-DLL auszulagern, die ich mal Core.dll nenne.
Also:
Die Hauptdll ist damit mit v110-Compiler (VS2012) 1003kb gross, grösser, als es vorhin Hauptprogramm und plugins zusammen waren. Gut, dachte ich, das ist wohl auf die allgemeinere Definition und damit mehr Overhead zurückzuführen, aber meine Plugins (auf der Festplatte 490kb gross), blasen sich dadurch auf 10MB im RAM auf.
Mir wäre das ja egal, doch wenn ich das mit den statischen Linken vergleiche, ist das fast das Doppelte.
(Der ganze Spass übrigens im Release).
Im Debug-Mode nämlich braucht das Programm "nur" 86MB, was mit der statisch gelinkten Version vergleichbar ist, Release sind es 100MB.
Nun meine Frage: Wieso?
Gruss
cwriter
/Edit:
Nun meine Antwort: Ich habe den Output-Pfad nur bei der Debug-Version angepasst, weshalb der Releasebuild des Hauptprogrammes die Debugdll geladen hat.
Ich stehe mal wieder auf dem Schlauch. Mein Programm ist folgendermassen aufgebaut:
Code:
Hauptprogramm -> Lädt Plugins
EXE <-----------Plugins linken die Funktionen aus der Hauptdatei statisch
Also wäre die logische Konsequenz, die Hauptfunktionen in eine haupt-DLL auszulagern, die ich mal Core.dll nenne.
Also:
Code:
Hauptprogramm -> Lädt Plugins
EXE \
| \
V \
Lädt Hauptfunktionen <-----------Plugins laden Funktionen aus der Hauptdll per dllimport
aus Core-DLL
Mir wäre das ja egal, doch wenn ich das mit den statischen Linken vergleiche, ist das fast das Doppelte.
(Der ganze Spass übrigens im Release).
Im Debug-Mode nämlich braucht das Programm "nur" 86MB, was mit der statisch gelinkten Version vergleichbar ist, Release sind es 100MB.
Nun meine Frage: Wieso?
Gruss
cwriter
/Edit:
Nun meine Antwort: Ich habe den Output-Pfad nur bei der Debug-Version angepasst, weshalb der Releasebuild des Hauptprogrammes die Debugdll geladen hat.
Zuletzt bearbeitet: