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

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

Yes, that's one of the reasons why I disabled the cache in codetools for
procedure overloads.

But I was talking about operator overloads. AFAIK there far less
operator overloads. And if a unit uses operator
overloads, then usually only a few, but many times.
I guess many units do not use overloaded operators at all.

Is it possible to measure how much time the compiler spends on
searching overloaded operators?

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

Reply via email to