Yeah, that could be a problem. Strangely SystemDictionary is a subclass of IdentityDictionary. It can be easily fixed, don't know if this has much of an impact on performance if the dictionary is smaller: SystemDictionary superclass: Dictionary. SystemDictionary allInstances do: [ :each | each rehash ] Lukas 2009/10/25 Stéphane Ducasse <stephane.ducasse@inria.fr>:
Ok I see. I would be curious to see if SystemDictionary does not degrade once we load Moose, Mondrian, Glamour....
So this means that by default we have bad performance. no?
No.
In a fresh Pharo Web image less than 6% of the keys in Dictionaries and less than 10% of the values in Sets have a weak-hashes. Moreover the largest set with weak-hash values has 516 elements (on average only 1.8 elements), the largest dictionary with weak-hash keys has 1002 elements (on average only 4.3 elements). Using HashTable in such a situation would introduce a major speed penalty and waste a lot of memory.
It would be cool if the Set and the Dictionary would choose their implementation strategy automatically depending on the use-case. In a standard Pharo image however that would just be the current implementation. There are simply no instances in the image where it would be worthwhile (large amount of data with bad hash) to use a HashMap.
Lukas
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli http://www.lukas-renggli.ch