Exe Größenunterschied zwischen VS2003 und 12



  • Ich habe nun bemerkt das bei meinem konvertieren Projekt von VS2003 auf VS2012 die Größe der .exe signifikant angestiegen ist. Wenn ich das Projekt auf VS2003 kompiliert habe war die Größe ungefähr 6.8-6.9 MB und jetzt c.a 10MB.

    Ich hab gelesen das es was mit MFC zu tuen hat, mehr weiß ich leider auch nicht.

    Mfg.

    Und nun ist meine Frage wie kann ich das beheben...



  • Schön dass du uns das mitteilst.

    Ich hab heute übrigens bis Mittag geschlafen.





  • @hustbear Seriously das sollte keine Mitteilung sein sondern eine Frage.

    Wenn man keine ordentliche Antwort hat sollte man es gleich lieber bleiben lassen.

    @Jochen Danke das hab ich auch schon durchgelesen, das hat mir jedoch nicht viel gebracht.



  • @Allowed

    1. Du hast keine Frage gestellt

    2. Wenn ich die Frage "wieso ist das so?" annehme, dann verstehe ich nicht was genau du nicht verstehst.

    Da liegen 3 VS Versionen dazwischen, und damit auch 3 MFC Versionen. In der Zeit hat es massiv viele Änderungen gegeben.
    Und Änderungen im Code der MFC und der CRT können halt dazu führen dass ein deutlich grösserer Teil der Libraries zu einem Programm dazugelinkt werden muss.

    Soviel sollte jedem klar sein. Und wenn ich annehme dass dir das klar ist, dann verstehe bin ich wieder dort angelangt wo ich nicht verstehe was die Frage sein soll.

    Also: was ist die Frage?



  • Allowed schrieb:

    Ich habe nun bemerkt das bei meinem konvertieren Projekt von VS2003 auf VS2012 die Größe der .exe signifikant angestiegen ist. Wenn ich das Projekt auf VS2003 kompiliert habe war die Größe ungefähr 6.8-6.9 MB und jetzt c.a 10MB.

    In der Zeit ist mein Hauptspeicher von 2G auf 16G gestiegen.
    Ich würde mal drauf tippen, daß Microsoft weiß, daß ich so viel Speicher gekauft habe und jetzt haben sie einige Optimierungseinschätzungen so gemacht, daß auf Kosten des Speicherbedarfs die Geschwindigkeit noch mal weiter steigt.



  • hustbaer schrieb:

    @Allowed

    1. Du hast keine Frage gestellt

    2. Wenn ich die Frage "wieso ist das so?" annehme, dann verstehe ich nicht was genau du nicht verstehst.

    Da liegen 3 VS Versionen dazwischen, und damit auch 3 MFC Versionen. In der Zeit hat es massiv viele Änderungen gegeben.
    Und Änderungen im Code der MFC und der CRT können halt dazu führen dass ein deutlich grösserer Teil der Libraries zu einem Programm dazugelinkt werden muss.

    Soviel sollte jedem klar sein. Und wenn ich annehme dass dir das klar ist, dann verstehe bin ich wieder dort angelangt wo ich nicht verstehe was die Frage sein soll.

    Also: was ist die Frage?

    Das Problem ist es wird ja komplett alles von der MFC Library dazugelinkt, aber nicht mal alle Funktionen daraus werden benutzt, deswegen ist mehr oder weniger Speicherplatzverschwendung die ich doch sehr gerne vermeiden würde.



  • Allowed schrieb:

    Das Problem ist es wird ja komplett alles von der MFC Library dazugelinkt,

    Wie kommst du auf die Idee? Ich bin mir ziemlich sicher dass das nicht so ist.

    aber nicht mal alle Funktionen daraus werden benutzt, deswegen ist mehr oder weniger Speicherplatzverschwendung die ich doch sehr gerne vermeiden würde.

    Aha.



  • hustbaer schrieb:

    Allowed schrieb:

    Das Problem ist es wird ja komplett alles von der MFC Library dazugelinkt,

    Wie kommst du auf die Idee? Ich bin mir ziemlich sicher dass das nicht so ist.

    aber nicht mal alle Funktionen daraus werden benutzt, deswegen ist mehr oder weniger Speicherplatzverschwendung die ich doch sehr gerne vermeiden würde.

    Aha.

    Mir wurde es so gesagt und ich habe es oft genug gelesen. Sonst würde die .exe Datei nicht so groß werden.

    Und bitte wenn du nichts besseres hast als hier zu spammen, dann halt dich zu diesem Thema doch bitte geschlossen



  • Allowed schrieb:

    Mir wurde es so gesagt und ich habe es oft genug gelesen. Sonst würde die .exe Datei nicht so groß werden.

    Dann wurde dir Mist erzählt und du hast Blödsinn gelesen... 😉



  • dot schrieb:

    Allowed schrieb:

    Mir wurde es so gesagt und ich habe es oft genug gelesen. Sonst würde die .exe Datei nicht so groß werden.

    Dann wurde dir Mist erzählt und du hast Blödsinn gelesen... 😉

    Dann würde ich trotzdem gerne wissen was dann der Grund ist, das die .exe größer wird, außer das die Libs erweitert wurden etc.



  • Allowed schrieb:

    dot schrieb:

    Allowed schrieb:

    Mir wurde es so gesagt und ich habe es oft genug gelesen. Sonst würde die .exe Datei nicht so groß werden.

    Dann wurde dir Mist erzählt und du hast Blödsinn gelesen... 😉

    Dann würde ich trotzdem gerne wissen was dann der Grund ist, das die .exe größer wird, außer das die Libs erweitert wurden etc.

    Was hustbaer sagt

    hustbaer schrieb:

    Da liegen 3 VS Versionen dazwischen, und damit auch 3 MFC Versionen. In der Zeit hat es massiv viele Änderungen gegeben.
    Und Änderungen im Code der MFC und der CRT können halt dazu führen dass ein deutlich grösserer Teil der Libraries zu einem Programm dazugelinkt werden muss.

    Schau dir vielleicht mal an, was genau der Linker eigentlich tut, insbesondere was COMDATs sind... 😉

    Und nur um sicherzugehen: Wir reden hier natürlich von einem Release Build!?



  • dot schrieb:

    Allowed schrieb:

    dot schrieb:

    Allowed schrieb:

    Mir wurde es so gesagt und ich habe es oft genug gelesen. Sonst würde die .exe Datei nicht so groß werden.

    Dann wurde dir Mist erzählt und du hast Blödsinn gelesen... 😉

    Dann würde ich trotzdem gerne wissen was dann der Grund ist, das die .exe größer wird, außer das die Libs erweitert wurden etc.

    Was hustbaer sagt

    hustbaer schrieb:

    Da liegen 3 VS Versionen dazwischen, und damit auch 3 MFC Versionen. In der Zeit hat es massiv viele Änderungen gegeben.
    Und Änderungen im Code der MFC und der CRT können halt dazu führen dass ein deutlich grösserer Teil der Libraries zu einem Programm dazugelinkt werden muss.

    Schau dir vielleicht mal an, was genau der Linker eigentlich tut, insbesondere was COMDATs sind... 😉

    Und nur um sicherzugehen: Wir reden hier natürlich von einem Release Build!?

    Natürlich reden wir vom Release Build.

    Ich werde es mal überprüfen, obwohl ich die Linker Einstellungen schon genau überprüft habe.



  • MS hat primär im Bereich von "Securiy" wesentliche Erweiterungen vorgenommen, die automatisch bei jedem Programm dabei sind (z.B. /GS)

    SIehe z.B: auch:
    http://blogs.msdn.com/b/sdl/archive/2009/04/03/gs-buffer-overrun-enhancements-in-visual-c-2010.aspx
    http://msdn.microsoft.com/en-us/library/8ef0s5kh



  • Jochen Kalmbach schrieb:

    MS hat primär im Bereich von "Securiy" wesentliche Erweiterungen vorgenommen, die automatisch bei jedem Programm dabei sind (z.B. /GS)

    SIehe z.B: auch:
    http://blogs.msdn.com/b/sdl/archive/2009/04/03/gs-buffer-overrun-enhancements-in-visual-c-2010.aspx
    http://msdn.microsoft.com/en-us/library/8ef0s5kh

    Danke die einigen neuen Änderungen vom Bereich Security hab ich schon zu spüren bekommen in Form von strcpy_s etc. etc.

    Aber das werde ich auch nochmal geanuer untersuchen.


  • Mod

    Der wesentliche Grund ist, dass die Ribbons mit vielen neuen grafischen Funktionen in die MFC eingeflossen sind. Leider hat man das nicht gescheit gemacht und diese Module werden immer (auch wenn diese nicht benötigt werden) mit gelinkt. Auf die Granularität wurde nicht geachtet.
    Es gibt einen Blog von einem anderen MVP der sich ausgiebig mit dem Problem befasst hat, der fält mir nur nicht gerade ein und Lust zum Suchen habe ich auch gerade nicht ;)....



  • Martin Richter schrieb:

    Der wesentliche Grund ist, dass die Ribbons mit vielen neuen grafischen Funktionen in die MFC eingeflossen sind. Leider hat man das nicht gescheit gemacht und diese Module werden immer (auch wenn diese nicht benötigt werden) mit gelinkt. Auf die Granularität wurde nicht geachtet.
    Es gibt einen Blog von einem anderen MVP der sich ausgiebig mit dem Problem befasst hat, der fält mir nur nicht gerade ein und Lust zum Suchen habe ich auch gerade nicht ;)....

    Genau das dachte ich mir ! Danke für den Hinweis !

    Es musste ja irgendwas mit MFC zu tun haben <.<

    Jetzt muss ich nur noch gucken wie ich den Part mit den neuen Ribbon Sachen entfernen kann vom Linker x.x



  • Hab es jetzt gemanaged bekommen mit dem Release Build (Hab noch eine andere Build Option) auf 9MB zu kommen, gibt es noch möglichkeiten es noch kleiner zu bekommen.


  • Mod

    😞

    Wenn ein Debug Build Dein Problemn war, dann war Deine Frage falsch.
    Wir sind alle davon ausgegangen, dass Du einen Debug Build hattest.

    Grundsätzlich keliener sind die XEs wenn Du nicht statisch linkst. Dann muss die Runtime halt vor hinstalliert sein. Das ist grundsätzlich mein Weg.
    Da 90% meiner Programme (unmanaged) die MFC verwenden. Also liefere ich einmal nur die Runtime DLLs mit. Die EXEs sind fein klein.

    Ansonsten lies:
    http://tedwvc.wordpress.com/


Anmelden zum Antworten