dcollections 1.0 and 2.0a beta released

Steven Schveighoffer schveiguy at yahoo.com
Thu May 20 06:22:27 PDT 2010


Michel Fortin Wrote:

> On 2010-05-20 06:34:42 -0400, Steven Schveighoffer <schveiguy at yahoo.com> said:
> 
> > I understand these points, but I'm already using interfaces to copy 
> > data between containers.  I don't have to, I could have used generic 
> > code, but this way, only one function is instantiated to copy data from 
> > all the other containers.  The problem with using generic code is that 
> > the compiler will needlessly duplicate functions that are identical.
> 
> One question. Have you calculated the speed difference between using an 
> interface and using generic code? Surely going through all those 
> virtual calls slows things down a lot.
> 
> I do like interfaces in principle, but I fear it'll make things much 
> slower when people implement things in term of interfaces. That's why 
> I'm not sure it's a good idea to offer container interfaces in the 
> standard library.

It's not that much slower.  You get a much higher speedup when things can be inlined than virtual vs. non-virtual.

However, I should probably make all the functions in the concrete implementations final.  I made several of them final, but I should do it across the board.

One thing I just thought of -- in dcollections, similar types can be compared to one another.  For example, you can check to see if a HashSet is equal to a TreeSet.  But that would not be possible without interfaces.

-Steve


More information about the Digitalmars-d-announce mailing list