[fpc-devel] Re: Comparison FPC 2.6.2 - Kylix 3
Michael Van Canneyt
michael at freepascal.org
Mon Mar 4 13:46:34 CET 2013
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 ?
Michael.
More information about the fpc-devel
mailing list