On Fri, 26 Jun 2015 19:26:56 +0000, Jack Stouffer wrote: > Thanks for the reply! I understand the reasoning now. > > On Friday, 26 June 2015 at 18:46:03 UTC, Adam D. Ruppe wrote: >> 2) interfaces have an associated runtime cost, which ranges wanted to >> avoid. They come with hidden function pointers and if you actually use >> it through them, you can get a performance hit. > > How much of a performance hit are we talking about? Is the difference > between using an interface and not using one noticeable?
For some real numbers, a while back I wrote up several variations on a "big data" type process for a presentation on memory performance and the importance of cache hits. The classic Java-style class-based version ran in 4 seconds while the lazy range struct version ran in 0.83 seconds. Using LDC to inline (impossible with interfaces) brought the runtime down to 0.38 seconds.