From: "Marco van de Voort" <mar...@stack.nl>
In our previous episode, Sven Barth said:
> and linked about 10 times as fast as FPC.

AFAIK Delphi's command line compiler does not allow you to skip the
assembling and linking phase, so the fairest comparison would be to
compare the compilation of a single unit as there the linking phase is
skipped. If Delphi is still better there then there are two
possibilities: improve the internal assembler or the parser/code
generator. Please keep in mind though that FPC's code generator is
written in such a way that the backend can be switched rather easily. As
we learned with the developer's blog entries about Delphi XE2 this
wasn't the case with Delphi XE and older. So it could be that you can never reach the speed of Delphi 7's compiler as FPC is more portable.

The numbers Martin names (up till 10 times slower, even without linking) are
the numbers I have in mind too. IMHO denial without tests is unfair.

I had a setup where I compiled zeos with FPC and Delphi (which doesn't
link), and iirc the results were also 7-10times, with delphi XE.

I also got similar results few years ago. Also I made some profiling and found a bottleneck in FPC. It is HUGE number of creations of small (or even tiny) objects (various compiler nodes). Each object creation allocates small chunk of memory and zero fills it. It is very time consuming. It is possible to seed-up compilation by allocating memory for nodes from some zero pre-filled memory pool to avoid costly calls to heap manager and avoid zero filling of small memory chunks. A base class for various FPC nodes should be modified to handle aloocation from the pool...

Yury Sidorov, j...@cp-lab.com _______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to