Size of an entry in a Map
Join the DZone community and get the full member experience.
Join For FreeThere have been some very good articles on the size of a map. However as a
map grows, it initial size become less important and the size per entry
is what matters.
How are the sizes measured
In these tests an int key and long values are used. This adds a small but realistic size to each entry.Size per entry of a medium sized Map
The following are the size per entry in bytes. The Map has 1024 entries.Type of Map | 32-bit | 64-bit compressed | 64-bit not compressed |
---|---|---|---|
TIntLongHashMap | 26.9 | 26.9 | 27.0 |
FastMap (recycled) | 32.0 | 39.9 | 47.9 |
IdentityHashMap | 48.0 | 56.0 | 80.0 |
ConcurrentSkipListMap | 68.3 | 76.1 | 108.3 |
TreeMap | 64.0 | 80.0 | 112.0 |
HashMap | 64.0 | 80.0 | 112.0 |
SynchronizedMap | 64.0 | 80.0 | 112.0 |
ConcurrentHashMap | 65.2 | 81.4 | 114.0 |
Properties | 68.0 | 84.0 | 120.0 |
Hashtable | 68.0 | 84.0 | 120.0 |
LinkedHashMap | 72.0 | 88.0 | 128.1 |
WeakHashMap | 80.0 | 88.0 | 136.1 |
The Javolution FastMap needed to be recycled. If it is not recycled, it was the largest per entry.
Conclusion
It may be worth considering The GNU Trove collections if you have primitive keys and/or values. However if you have non-trivial keys or values classes, the size of the collection is less likely to matter.The Code
SizeOfMapsTest.java
From http://vanillajava.blogspot.com/2011/07/size-of-entry-in-map.html
64-bit
Data structure
32-bit
Javolution
Testing
Trove
Property (programming)
Data Types
GNU
Opinions expressed by DZone contributors are their own.
Comments