On Sun, Nov 23, 2008 at 11:26 PM, Christopher Wright <[EMAIL PROTECTED]> wrote: > Bill Baxter wrote: >> >> On Sun, Nov 23, 2008 at 3:25 PM, Jarrett Billingsley >> <[EMAIL PROTECTED]> wrote: >>> >>> On Sat, Nov 22, 2008 at 11:40 PM, Sam S E <[EMAIL PROTECTED]> >>> wrote: >>>> >>>> Does foreach use delegates? Isn't that unnecessary overhead? >>>> --Sam >>> >>> It does use delegates, for iterating over most types. When iterating >>> over arrays, the compiler turns it into a sort of for loop instead. >>> >>> Is it unnecessary overhead? It's not always as fast as it could be, >>> but unless someone can figure out some other way of implementing it, >>> it's pretty much the best we can get. >>> >>> How about iterator objects, like in C++ or Java? Are they unnecessary >>> overhead? ;) >> >> How does delegate overhead compare to the stack thread context switch >> overhead in the new Fibers in druntime? >> >> --bb > > ~32 instructions per switch and 4KB allocated for fibers, versus about 2 > instructions and no allocation for delegates.
Oh, that's a bit worse than I was thinking. Not a good default iteration strategy then. Bummer. --bb
