foreach

Bill Baxter wbaxter at gmail.com
Sun Nov 23 11:04:34 PST 2008


On Sun, Nov 23, 2008 at 11:26 PM, Christopher Wright <dhasenan at gmail.com> wrote:
> Bill Baxter wrote:
>>
>> On Sun, Nov 23, 2008 at 3:25 PM, Jarrett Billingsley
>> <jarrett.billingsley at gmail.com> wrote:
>>>
>>> On Sat, Nov 22, 2008 at 11:40 PM, Sam S E <eisenstat.aa at sympatioco.ca>
>>> 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



More information about the Digitalmars-d mailing list