www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - How to size optimize the executable?

reply Claus D. Volko <cdvolko gmx.net> writes:
What bothers me about D is that the executables dmd generates are quite large.
Some simple programs have almost 200 kb. I've tried packing them with kkrunchy,
the result are still about 100 kb. By contrast, with Visual C++ such programs
would be only a few kbytes (in release mode). Why is D generating such big
executables? How is it possible to get them smaller?
Jan 14 2009
next sibling parent dsimcha <dsimcha yahoo.com> writes:
== Quote from Claus D. Volko (cdvolko gmx.net)'s article
 What bothers me about D is that the executables dmd generates are quite large.

the result are still about 100 kb. By contrast, with Visual C++ such programs would be only a few kbytes (in release mode). Why is D generating such big executables? How is it possible to get them smaller? Well, one reason is because D has a larger runtime that includes things like GC. Theoretically, this could be made into a shared lib, but I think there are higher priorities in the D community.
Jan 14 2009
prev sibling parent Lutger <lutger.blijdestijn gmail.com> writes:
Claus D.  Volko wrote:

 What bothers me about D is that the executables dmd generates are quite
 large. Some simple programs have almost 200 kb. I've tried packing them
 with kkrunchy, the result are still about 100 kb. By contrast, with Visual
 C++ such programs would be only a few kbytes (in release mode). Why is D
 generating such big executables? How is it possible to get them smaller?

MS C++ generated executable use a shared runtime by default, try compiling with static libraries and see the difference. In D there's all sorts of typeinfo, the GC, the D and also the c runtime taking up space. The way to make significantly smaller executables is building a shared D runtime. It's not too bad, a mingw compiled hello world is almost 500kb... (thanks to iostreams mostly).
Jan 14 2009