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