Ist es normal, dass 28 Zeilen code als exe 1,20Mb Platz brauchen ?
-
Wie mach ich das bei dev c++ 4.9.8.0 ?
-
tools -> compiler options -> linker -> generate debugging information -> no
btw. neueste version runterladen
was auch immer
-
Passierte mir auch schon oft... Ich machte mal was: Compilert: 30kb gross. Ich inkludierte einen Header. Plötzlich 500kb gross^^
-
ok.ohne debugging informationen ist es nur noch 439 kb groß. Danke schonmal, aber gehts auch noch kleiner ?
-
strip --strip-all <datei>
und danach upx
-
-
keine Ahnung. Ich weiß nicht was eine normale größe für so ein Programm ist aber 439 kb sind ja wohl zuviel. Ich denke mal,bei so einem kleinen Programm dürften es höchstens 10 kb sein
mady schrieb:
strip --strip-all <datei>
und danach upx
wie meinst du das ?
-
du vergisst, dass das programm mehr macht als dein code aussagt.
hinter cout und cin stecken sehr komplexe sachen.ich würde sagen etwa 200kb sind standard.
bedenke dass diese overhead konstant ist. dh ein etwas größeres programm wird etwas gelcih viel speicher brauchen.
du kannst natürlich die c++ standard lib dynamisch linken, dann ist das programm _wesentlich_ kleiner - allerdings muss der anwender die passende .dll installiert haben...
-
also ist diese größe sozusagen die einmalige "Grundgebühr" oder wächst der Speicher mit den Zeilen im ungefähr selben tempo weiter ?
-
Ich denke mal nicht... (NE ich bin mir sicher^^)
-
sbrog schrieb:
also ist diese größe sozusagen die einmalige "Grundgebühr" oder wächst der Speicher mit den Zeilen im ungefähr selben tempo weiter ?
eine einmalige Grundgebühr (wenn du es so nennen willst)
-
sbrog schrieb:
keine Ahnung. Ich weiß nicht was eine normale größe für so ein Programm ist aber 439 kb sind ja wohl zuviel. Ich denke mal,bei so einem kleinen Programm dürften es höchstens 10 kb sein
Ein Assembler Programmierer würde wohl sagen, das darf höchtsen 128 Byte groß sein. Die Frage ist, ob du erreichen willst, das dieses spezielle Programm klein ist (warum auch immer). Dann benutzte nur C Zeugs wie printf, dann könnte das mit den 10k evtl. klappen. Wenn du jetzt einfach wolltest das es klein ist, weil du dachtest "Hey, das ist ziemlich groß.", dann vergiss es... Und wenn (3. Möglichkeit) du nur wissen wolltest warum zum Teufel das so groß ist, sollte ja nun geklärt sein: da sind jetzt aus verschiedenen Bibliotheken 'ne Menge Funktionen drin, die du eigentlich nicht bräuchtest.
Bye, TGGC \-/
-
nö, printf ist unglaublich groß und bringt glaub ich schon so 12k overhead mit bei der glibc.
Wer extrem kleine Programme haben will, ist mit der C++ Standard Library leider nicht sehr glücklich.
Am besten Dietlibc oder µLibc benutzen.
(-Os als Compile-Flag bringt auch ein bisschen was)
-
kingruedi schrieb:
nö, printf ist unglaublich groß und bringt glaub ich schon so 12k overhead mit bei der glibc.
IIRC aber eben nur 1/10 von dem cout Gedöns.
Bye, TGGC \-/
-
aber man kann noch mehr sparen. Ich versteh auch nicht, warum der Standard keine einfachen Funktionen hat um Zahlen in Strings umzuwandeln. Der sprintf Ansatz ist ja nicht nur mit größe, sondern auch mit Laufzeitkosten verbunden
-