Published on August 2, 2017 by java

Graphs or many-to-many relations occur naturally in application areas such as compilers, runtimes of programming languages, or static analyses of object-oriented software. On the Java Virtual
Machine, relations are not natively language-supported; rather the standard libraries of programming languages like Java, Scala and Clojure either provide implementations of multi-maps, or the map and set APIs allow programmers to construct multi-maps easily by using sets as the values of a normal polymorphic map. Typically, these implementations come with a 65 byte overhead per stored key/value item, making it infeasible to process larger in-memory data sets efficiently. The goal of this talk is to present technical solutions on how to overcome the limitations of these existing multi-maps, improving drastically on the memory footprint without loss of storage, lookup and iteration efficiency of hash-tables.
Specifically, the talk focuses on a type-safe hybrid map/multi-map data structure that is capable of adding the functionality of many-to-many data types to collection libraries without introducing bloat.
Furthermore, it details: how to achieve 5x smaller memory footprints on average, in order to cope with larger data sets
with collections, how to add supplementary intrinsic support to HotSpot in order to facilitate complex bitmap processing, and
how parallel processing in the Stream API can benefit from lightweight relations when merging results.
It is time to extend the performance envelope of collections towards memory intensive data applications in Java’s standard library, without bloating the library’s code base.

Leave a Reply

Be the First to Comment!

Notify of