[Newbies] collection enumeration

Bert Freudenberg bert at impara.de
Wed Aug 23 21:45:45 UTC 2006


(a) is certainly much slower if collection is a LinkedList

- Bert -

Am 23.08.2006 um 22:20 schrieb stéphane ducasse:

> but is a not the fastest one?
> because you nearly only call primitives?
>
> I did not check.
> Cedric did you benchmark a and c.
> even if large dictionaries degenerate in Squeak.
>
>>> (a) ---- à la C
>>>
>>> (1 to: collection size) do: [:index |
>>> 						html render: 'Victime ', index printString.
>>>                                                html render:
>>> collection at: index]
>>>
>>> (b) --- indexOf
>>>
>>> collection do: [:victim |
>>> 						html render: 'Victime ', (collection indexOf: victim)  
>>> printString.
>>>                                                html render: victim]
>>>
>>> (c) ---- keysAndValuesDo:
>>>
>>> collection keysAndValuesDo: [:index :victim |
>>> 						html render: index printString.
>>>                                                html render: member]
>>>
>>> (d) ---- using a local var
>>>
>>> | index |
>>> index := 0.
>>> collection do: [:victim | index := index + 1.
>>> 						html render: 'Victime ', index printString.
>>>                                                html render: victim]
>>>
>>> What solution would you suggest ?
>>> I think we forget (a) and (d)
>>> I like (c) but maybe (b) is more readable ?
>>>
>>> Maybe there is another way ?
>>
>> (c), though I like #withIndexDo: better since it mimics the  
>> #with:do: pattern.
>>
>> - Bert -



More information about the Beginners mailing list