Op Mon, 4 Mar 2013, schreef Mattias Gaertner:
On Mon, 4 Mar 2013 14:37:40 +0100 (CET)
Daniël Mantione <daniel.manti...@freepascal.org> wrote:
Op Mon, 4 Mar 2013, schreef Mattias Gaertner:
Can this be cached?
Maybe the compiler can reuse some results?
No. The symtable lookups can be parsed, but the candidate selection, which
I believe is actually more compute intensive, is dependend on the actual
situation where the operator is called, for example the types of the left
and right part, which would not yield very high hit rates.
Why not?
I guess that a high percentage are only a few type,operator,type
combinations.
interface
function substring(x,y:unicodestring):cardinal;
function substring(x,y:ansistring):cardinal;
function substring(x,y:shortstring):cardinal;
implementation
{...}
var a:unicodestring;
b,c:ansistring;;
begin
a:='banana-split';
b:='banana-split';
c:='banana';
writeln(substring('banana','banana-split'));
writeln(substring(b,a));
writeln(substring(a,a));
end.
... we would have 3 cache lookups, and 3 misses. Then we have end of
scope, the symtablestack changes, and we therefore have to invalidate the
cache. In this example, a cache would therefore slowdown instead of
speed-up.
Daniël
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel