It is a good point. With my C++ programs, I tend to compile with
everything statically linked and self-contained, since it tends to be
smaller than a dynamically-linked program plus the redistributable
combined (and the risk of "DLL Hell" means you can't just install the
redistributable in the System directory). Granted, it's useful if you
are shipping a lot of small utilities together. Admittedly, FPC might
benefit from the dynamically-linked redistributable. A workplace that I
was once doing a contract for turned down my request to have FPC
installed because there were too many EXE files to add to their
exceptions list (the company dealt with financial data, so they were
extra-paranoid about what gets installed on their workstations).
Does smart linking strip out elements of the RTL that aren't used?
Granted, I'm trying to think of an example off the top of my head - I
was going to say "WriteLn", but I can see the internal functions using
them for stack traces and exception handling.
I do hope I'm not a person who people wish to avoid... I've gotten too
passionate for my own good a couple of times. I do want to learn
everything I can when it comes to the inner workings of a binary
(admittedly I'm currently locked to Intel platforms, but that may change
in future). The warning of 'blobing' as a reason against inlining
single-use functions was never something I was introduced to or was
really documented anywhere, so I didn't really know any better. I'm
still guessing what is meant by 'blobing', but hopefully I can learn
soon enough.
Seeking to reduce binary size (without sacrificing speed) and make as
many optimisations as possible may be a fool's errand because the
returns don't justify the costs, but I personally enjoy the challenge
and puzzle-solving element of it. I just hope I haven't scared off the
administrators when I argued with Florian on my jump optimisations (the
aforementioned inline/blobing issue).
Gareth aka. Kit
On 08/11/2019 22:22, Nikolai Zhubr via fpc-devel wrote:
08.11.2019 16:28, J. Gareth Moreton:
[...]
No gain? Wow, is whole-program optimisation that underperforming? Given
the bloated size of FPC's binaries compared to, say, what a mainstream
C++ compiler than do, I would have thought that there could be a lot
Keep in mind that pretty much any tiny MSVC application would these
days push a (few-megabytes-sized) vcredist package in front of it.
Similarly, gcc would typically dynamically link against
some-megabytes-sized libc and other system libraries. On the other
hand, FPC typically produces self-contained binaries with all required
RTL code built-in. Whether it is good or not depends on your usage
context, but application binary size comparison should at least take
this into account to be of some use.
--
Regards,
Nikolai
that could be stripped out in regards to unused functions and the like.
Or am I missing something? The large binary sizes feel like an elephant
in the room that no-one talks about. What causes them?
Gareth aka. Kit
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel