[fpc-devel] Forwarded message about FPC statusy

Yury Sidorov jura at cp-lab.com
Tue Dec 25 13:39:56 CET 2012

From: "Marco van de Voort" <marcov at 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 
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 

Yury Sidorov, jura at cp-lab.com 

More information about the fpc-devel mailing list