[fpc-pascal] Executable size compiler 1.96 vs 1.06
peter at freepascal.org
Tue May 17 08:20:51 CEST 2005
> With compiler version 1.96, one of my command line applications is 1MB
> With the 1.0.6 compiler (using dev pascal) it is just 100KB. (win32)
> On linux, 1.96 the application was about 300KB.
> (not so worried about linux, since this is not consistent
> testing..comparing two OS's)
> What is the major reason for the different sizes? The application I'm
> testing uses the same compiler command
> line arguments. The application calls on the synregexpr unit (which calls
> for the classes unit). I'm guessing
> the classes unit maybe has something to do with the size addition. But how
> come 100KB to 1MB? This reminds me
> of when I first started using lazarus and comparing to Delphi, or when I
> first started using KOL vs VCL in
> Delphi ;-)
> Before I go digging into the sources spending hours figuring out the major
> code changes between the compilers,
> maybe you could just give me a summary of the major causes (the compiler
> was completely rewritten, with this
> much difference?)
> Also, if there is discussion on this in the mailing list from previous
> questioners let me know! I just want to
> know some of the details (like it's because of more initialization
> functions? because the classes unit got
> bigger with time? code that just couldn't be smart linked in later
> compiler versions?).
Initialization of the classes and implicitly used sysutils unit uses more
code. Also the use of resourcestrings increases the binary.
The size is mainly a rtl issue. The smartlinking principle in the compiler
isn't changed since 1.0.6.
More information about the fpc-pascal