Repository landing page

We are not able to resolve this OAI Identifier to the repository landing page. If you are the repository manager for this record, please head to the Dashboard and adjust the settings.

Fast and Lean Immutable Multi-Maps on the JVM based on Heterogeneous \n Hash-Array Mapped Tries

Abstract

An immutable multi-map is a many-to-many thread-friendly map data structure \nwith expected fast insert and lookup operations. This data structure is used \nfor applications processing graphs or many-to-many relations as applied in \nstatic analysis of object-oriented systems. When processing such big data sets \nthe memory overhead of the data structure encoding itself is a memory usage \nbottleneck. Motivated by reuse and type-safety, libraries for Java, Scala and \nClojure typically implement immutable multi-maps by nesting sets as the values \nwith the keys of a trie map. Like this, based on our measurements the expected \nbyte overhead for a sparse multi-map per stored entry adds up to around 65B, \nwhich renders it unfeasible to compute with effectively on the JVM. \n In this paper we propose a general framework for Hash-Array Mapped Tries on \nthe JVM which can store type-heterogeneous keys and values: a Heterogeneous \nHash-Array Mapped Trie (HHAMT). Among other applications, this allows for a \nhighly efficient multi-map encoding by (a) not reserving space for empty value \nsets and (b) inlining the values of singleton sets while maintaining a (c) \ntype-safe API. \n We detail the necessary encoding and optimizations to mitigate the overhead \nof storing and retrieving heterogeneous data in a hash-trie. Furthermore, we \nevaluate HHAMT specifically for the application to multi-maps, comparing them \nto state-of-the-art encodings of multi-maps in Java, Scala and Clojure. We \nisolate key differences using microbenchmarks and validate the resulting \nconclusions on a real world case in static analysis. The new encoding brings \nthe per key-value storage overhead down to 30B: a 2x improvement. With \nadditional inlining of primitive values it reaches a 4x improvement

Similar works

This paper was published in CWI's Institutional Repository.

Having an issue?

Is data on this page outdated, violates copyrights or anything else? Report the problem now and we will take corresponding actions after reviewing your request.