Discussion:
[fpc-devel] The 15k bounty: Optimizing executable speed forLinux x86 / LLVM
J. Gareth Moreton
2018-10-25 07:05:12 UTC
Permalink
I would argue how such a bounty would be
rewarded here because overall performance
gains have been done by multiple
submitters. For example, I've submitted a
number of improvements to the optimiser to
produce both smaller and faster machine
code.

And unfortunately not many of us have
access to Kylix.

Saying all that though, any improvement to
FPC is greatly welcomed.

Gareth aka. Kit


On Thu 25/10/18 08:38 , Michael Van
- Make Exception handling, TLS etc use
the
infrastructure that
libpthread is providing
TLS is handled already by libpthread. I
doubt you will gain much there.
However, Exception handling is a
- DWARF exception handling as mentioned
by Sven.
- Port SEH to be cross platform, this is
the approach as taken by Kylix.
Kilyx has a small rtlunwind library
that mimics the needed run-time
functionality
offered by Windows.
Conceivably, it can be duplicated. wine
probably has such a library which
can be used as an inspiration.
The needed compiler infrastructure for
SEH already exists, so this is most
likely
the fastest way to proceed.
Michael..
__________________________________________
_____
fpc-devel maillist - fpc-
http://lists.freepascal.org/cgi-
bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org
http://lists.freepascal.org/cgi-b
Michael Van Canneyt
2018-10-25 08:19:44 UTC
Permalink
Post by J. Gareth Moreton
I would argue how such a bounty would be
rewarded here because overall performance
gains have been done by multiple
submitters. For example, I've submitted a
number of improvements to the optimiser to
produce both smaller and faster machine
code.
I think that specific improvements should be specified, and a bounty for
each of these improvements should be specified, instead of an overall
bounty.

Michael.
_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/lis
Simon Kissel
2018-10-28 11:18:06 UTC
Permalink
Hi Michael,
Post by Michael Van Canneyt
I think that specific improvements should be specified, and a bounty for
each of these improvements should be specified, instead of an overall
bounty.
I agree. Let's agree on a list of improvements, and spread
to bounty accordingly.

Simon

_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/
J. Gareth Moreton
2018-10-28 03:38:40 UTC
Permalink
To add my two pence to this:

Low-level optimisation is my personal speciality.  Currently a lot of
what I do is on small savings within the peephole optimizer on x86
systems.  Generally the result is that the compiler runs slightly more
slowly, but the final binary runs a bit more efficiently - for example,
replacing integer divisions by a constant with multiplications.

It's not as important as improving node generation and the like, but every
little helps.  In the meantime, I'm seeing if it's possible to minimise
the number of passes that the optimiser makes - currently it's at least 4
per code block when -O3 is specified... pre-peephole, pass 1 (which is
repeated until there are no more critical changes), pass 2 and
post-peephole).  This may not amount to anything, but I tend to experiment
a lot.

Part of my incentive is that I like to design games and am also an amateur
mathematician, both fields that can benefit from speed gains, so if I can
make Free Pascal into something that is suitable for such tasks, then my
life is complete!

Gareth aka. Kit
Ben Grasset
2018-10-29 01:01:35 UTC
Permalink
On Sun, Oct 28, 2018 at 12:40 AM J. Gareth Moreton <
Post by J. Gareth Moreton
Part of my incentive is that I like to design games and am also an amateur
mathematician, both fields that can benefit from speed gains, so if I can
make Free Pascal into something that is suitable for such tasks, then my
life is complete!
That's also more broadly kind of part of what I was getting at. Basically I
was just trying to point out that whether or not it was originally within
the scope of the project, FPC IS nowadays being used for various things
that do in fact require the highest level of performance possible. Just
look at stuff like the Castle Game Engine, or at any of the games/demos
that have come out of the contests on the Lazarus forums.

The idea that "real world use cases" means "boring database applications
and pretty much nothing else" with regards to FPC nowadays is just
objectively wrong. I'd imagine that a large percentage of the people who
use FPC now don't actually care at all about stuff like FCL-DB, and will
never use it.

Simon Kissel
2018-10-28 11:19:37 UTC
Permalink
Hi Gareth,
Post by J. Gareth Moreton
And unfortunately not many of us have
access to Kylix.
I can have a look if a can package something that works
based on the old Open Edition of Kylix for those who
don't have an Kylix ISO floating around.

Simon

_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org
http://lis
Loading...