On 3/20/2010 13:21, bearophile wrote: > Moritz Warning: >> The Python docs say that common usage is mostly about very small >> aas with frequent accesses but rare changes. > > D and Python will probably have different usage patterns for AAs. In > Python dicts (AAs) are used to give arguments to functions (that's > why recursive functions are so slow in Python) and to represent most > name spaces (there are few exceptions like the __slots__, but they > are uncommon), so in a big percentage of cases they contain few > string-value pairs (they have an optimization for string-only keys), > that's why python dicts have an optimization for less than about 8 > key-value pairs.
I don't know about Java or D, but my usage pattern for boost::unordered_map in C++ is rather similar to that of Python dicts: - Most keys are strings (either std::string or my own interned string class). - The amount of read accesses far exceeds the amount of write accesses. Many AAs are write-once, read-often. - Small AAs are common, although probably not as common as in Python. - I even use boost::unordered_map as the dictionary type in my own Python-like scripting language. This accounts for around 10% of my total usage of boost::unordered_map. -- Rainer Deyke - [email protected]
