[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