Am 10.11.2019 um 16:06 schrieb Michael Van Canneyt:
On Sun, 10 Nov 2019, J. Gareth Moreton wrote:
This message chain has proven to be a lot more educational and
insightful than I would have given it credit for. Thanks everybody!
I know a lot of the time, the size of binaries is just an illusion,
along with unfair comparisons with GCC (a behemoth with corporate
support) and Microsoft Visual C++ that often hides the size of
binaries behind a redistributable library. I don't ever seek to make
binaries smaller at the expense of speed, but if I see a potential
saving that could be done automatically, I dive for it!
On 10/11/2019 14:47, Marco van de Voort wrote:
(and btw, if you are serious about these scenarios, drop all
optimization work immediately, and start working on packages :-)
I did try to start simple with the 'uComplex' unit, but concerns were
raised because I changed the formal parameters to 'const' and aligned
the complex type on x86-64 platforms so it can take advantage of XMM
registers better (which, given proper optimisation, would result in
both smaller code size and higher speed). While I made sure that the
interfaces would not change for Pascal code, assembler code that
calls the functions (if it exists) might need to be changed slightly
(something Florian raised). I'm not quite sure what the rules are
when it comes fo updating packages, other than the obvious one of not
breaking old code.
I think Marco referred to dynamically loadable packages (aka run-time
packages)
In the meantime I've managed to fix the dynamic package support that had
experienced a bit of bit rot in the last years. Though I've currently
only tested Win32 and Win64 (x86_64-linux as well as *-darwin *should*
work as well). And as before only compile time packages are supported.
For those that are interested, the sizes of the binaries for chmls are
as follows:
=== output win32 begin ===
2633984 rtl.dll
414820 rtl.objpas.dll
247060 rtl.extra.dll
364625 rtl.generics.dll
389888 fcl.res.dll
788664 fcl.base.dll
962560 fcl.xml.dll
953676 chm.dll
68694 chmls.exe
=== output win32 end ===
=== output win64 begin ===
3707538 rtl.dll
601446 rtl.objpas.dll
345340 rtl.extra.dll
459357 rtl.generics.dll
568559 fcl.res.dll
1187518 fcl.base.dll
1602915 fcl.xml.dll
1419896 chm.dll
85131 chmls.exe
=== output win64 end ===
For those that wonder that rtl.generics is so small: the big part is
contained in the metadata .pcp file:
- Win32: 38442358 rtl.generics.pcp
- Win64: 38607350 rtl.generics.pcp
Yes, it's massive, but only required on the development machine. :)
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel