Michel Fortin Wrote: > On 2010-05-20 06:34:42 -0400, Steven Schveighoffer <schvei...@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