[fpc-devel] inline... and philosophy

J. Gareth Moreton gareth at moreton-family.com
Sat Nov 9 15:51:39 CET 2019


Competitions aside, there are times where space is a premium, whether it 
be from distributing an application on a DVD, bandwidth or data limits 
(even some first world countries are still on dial-up in places, or are 
otherwise monopolised by a single, bad-quality provider), the smaller 
capacity of solid-state hard drives (especially on some laptops) and can 
otherwise be a money saver sometimes.

Now, I don't condone EXE compression except maybe for setup programs, 
and I don't condone making a binary smaller at the expense of 
performance (hence why you should never use the "LOOP" opcode).

It is mentioned on the Wiki article that those who program on embedded 
systems use their own customised libraries for smaller sizes and higher 
speed.  Nothing wrong with that, but I don't think RTL patches should be 
ignored straight-up.  I hoped to update uComplex to be friendlier to 
newer processors (one problem that Delphi had) by aligning the type and 
utilising vectorcall on win64 (aligning the type is enough on Unix-like 
systems for the compiler to take full advantage of the vector 
registers).  This can make a significant improvement in performance AND 
code size once the compiler gets smarter with vectorisation.  Given it's 
a very old unit, I've done my best to ensure backwards compatibility is 
maintained in Pascal-only code, although I think there will always be 
breaks in edge cases.

Maybe it is unrealistic to compare FPC to GCC and some commercial 
compilers, but I personally like to aim high anyway.

In truth, I think the FPC test suite could use some more benchmark tests 
to a) see if a proposed performance buff actually improves compiler 
speed (e.g. what I did for improving case blocks), and b) to see if a 
size reduction optimisation doesn't impact speed too badly.  Ideas that 
spring to mind... integer and floating-point division operations (recent 
versions of the compiler convert them to multiplications when possible), 
and maybe a use-case for uComplex.  Granted, I could make my own 
highly-optimised mathematical unit, but how might one recommend people 
use it over what's supplied with FPC?

Gareth aka. Kit


On 09/11/2019 13:46, Michael Van Canneyt wrote:
>
>
> On Sat, 9 Nov 2019, Marco van de Voort wrote:
>
>>> 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).
>>>
>> Start with asking why you feel the need to do it, and how much would 
>> be enough.
>
> It's never enough:
> http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
>
> Michael.
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20191109/0a40b659/attachment.html>


More information about the fpc-devel mailing list