On 26.08.2009, at 16:50, Randal L. Schwartz wrote:
As we were discussing this issue last night at the Portland Smalltalk meeting after-meeting dinner, whether it is faster to grab the associations to sort them, or to grab the keys to sort them first then go look up the values, depends on the storage of a Dictionary. And I suspect that since the Squeak implementation of Dictionary already has the associations and just needs to spit them out, that's probably going to be faster than going back to look them up one by one, as the above code does.
This is leaving newbie-territory, but don't speculate about performance, measure instead:
| dict | dict := Dictionary new. 100000 timesRepeat: [dict at: 1000000 atRandom put: 'dummy']. { [dict keys asSortedCollection do: [:key | | value | value := dict at: key]] timeToRun. [dict associations asSortedCollection do: [:assoc | | key value | key := assoc key. value := assoc value]] timeToRun. }
... and this would give the advantage to using #keys.
- Bert -