[gelöst] Visual Studio - Release ist deutlich größer als Debug



  • Hallo,

    ich arbeitet jetzt seit einiger Zeit mit Visual Studio Professional 2008. Ich habe mir eine kleine "SDK" geschrieben mit allen Dingen, die ich immer wieder mal brauche. Das ganze bekomme ich dann schön als mysdk.lib und mysdl_d.lib (d für Debug).

    Was mir heute aufgefallen ist, dass die mysdk.lib knapp 7 MB hat, aber die mysdk_d.lib nur 295 KB hat. Kann das stimmen? Ich war der Überzeugung, dass die Debuginformationen ja doch deutlich Speicherplatz brauchen würden und deswegen die Debug-Datei im Normalfall immer größer sein müsste als die Release-Datei.

    Ich hab daraufhin meine ganzen Preprozessoren geprüft und mal Debuggt. Es klappt alles.

    Was gibt es zu wissen, was ich hier noch nicht weiß und die unterschiedlichen 6.5 MB erklärten würde?

    Danke,
    Stefan



  • Im Releasemodus könnte die Whole-Program-Optimization dafür verantwortlich sein. Dabei packt der Compiler nicht nur die Objekte, sondern den gesamten Syntaxtree in die Bibliothek, damit beim Binden eines Programms mit dieser Bibliothek noch Optimierungen wie Inlining oder Call-Convention-Optimierungen gemacht werden können.



  • Und warum passiert das beim Debug nicht?



  • stefanjann schrieb:

    Und warum passiert das beim Debug nicht?

    Vermutlich, weil du die Optimierungen für die Debug-Version ausgeschaltet hast?



  • Jetzt hab ichs gefunden. Ihr habt recht. Ich hab bei Release die Option "Link-Zeitcodegenerierung verwenden" aktiviert.
    Tja, so hat jeder Compiler seine Eigenheiten die man erst kennenlernen muss.

    Danke euch recht herzlich für Auskunft nud Geduld.
    Stefan



  • _matze schrieb:

    Vermutlich, weil du die Optimierungen für die Debug-Version ausgeschaltet hast?

    Dürfte bei Debug sogar Standard sein, da einem gerade Inlining das fröhliche steppen im Quellcode ganz schön vermiesen kann 🙂


Anmelden zum Antworten