On Mon, 4 Mar 2013 13:38:50 +0100 (CET)
Daniël Mantione <daniel.manti...@freepascal.org> wrote:

>[...]
> Some features only request procesing power if you use them. However, 
> the features in Florian's list require continuous processing power. Two 
> examples how features can impact overall speed:
> 
> 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.

Is there no cache?
Something like: Give me all '+' operator overloads in all used units
of interface, implementation.

 
> 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.

Can this be cached?
Maybe the compiler can reuse some results?

 
> So even if you don't use operator overloading or variants at all, they do 
> affect the compiler speed.

Mattias
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to