我正在尝试用Java实现Hash Array Mapped Trie。之前,我认为这个数据结构应该比Hash Map更高效,但是当我使用Visual Vm进行第一次内存测量时,我发现我的实现需要更多的内存然后Hash Map(也“put”操作更慢)。我无法理解:HAMT确实需要更多内存或者我在实现中犯了错误。 与in this question类似的性能结果。
“Hash Array Mapped Trie”的性能优于“Hash Table”(“Hash Map”)?
答案 0 :(得分:2)
单个HAMT可能需要比单个哈希表更多的内存。只有在使用HAMT的持久属性时才会出现内存优势。当您复制HAMT并更改其中的单个值时,您可以共享两个副本之间的大多数节点,对于通常需要复制整个表结构的哈希表。