[fpc-devel] Re: Comparison FPC 2.6.2 - Kylix 3

Sven Barth pascaldragon at googlemail.com
Mon Mar 4 14:31:09 CET 2013


Am 04.03.2013 13:46, schrieb Michael Van Canneyt:
>
>
> On Mon, 4 Mar 2013, Sven Barth wrote:
>
>> Am 04.03.2013 13:38, schrieb Daniƫl Mantione:
>>> 1. Operator overloading
>>>
>>> Operators are some of the most common tokens in source code. Without 
>>> operator overloading, if you parse an operator, you simply generate 
>>> a tree node.
>>>
>>> With operator overloading, for each operator that you parse, you 
>>> have to traverse all loaded units to check if the operator is 
>>> overloaded. If there are 50 units loaded, this means 50 symtable 
>>> lookups, simply because the operator might be overloaded.
>>>
>>> For each operator overload candidate that is found, the compiler has
>>> need to check for many possible type conversions to see if the 
>>> candidate can actually be used.
>>>
>>> The situation with Pascal type conversion has grown increasingly 
>>> complex over the years. For example almost any type can be converted 
>>> into a variant, and a variant can be converted into almost any type. 
>>> This requires all kinds of special handling, not only to do the 
>>> right thing, but also not to do ineffcient type conversions.
>>>
>>> So even if you don't use operator overloading or variants at all, 
>>> they do affect the compiler speed.
>>>
>> Maybe we can improve this situation. For class helpers I added the 
>> possibility to add flags to symtables (so that only units are checked 
>> that really contain class helpers). Maybe we can add an additional 
>> "has_operators" flag and ignore all units when searching for 
>> overloads that don't have this flag set (the flag would propagate 
>> from the symtable of e.g. advanced records up to the unit symtable 
>> when parsing the record's declaration). As most units don't declare 
>> operators this could result in a little speedup especially 
>> considering that the lookup is done on each operator... and then we 
>> might add some caching structures to improve this further.
>
> That seems simple enough to implement and test ?
>
Yes, maybe I'll give it a try in the next couple days (if no one beats 
me :) ).

Regards,
Sven



More information about the fpc-devel mailing list