Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

primitive multimap in java with good (insert, iteration) performance characteristics

I'm doing some heavy processing (building inverse indices) using ints/ longs in Java.

I've determined that (un)boxing of standard java.collections maps takes a big portion of the total processing time. (as compared to a similiar implementation using arrays, which I can't use due to memory constraints).

I'm looking for a fast 3rd-party implementation (or any implementation at all for that matter) that could support the following structure:

Map with characteristics:

-keys in the map are sparse (+/- 10.000.000 keys in range [0,2^64] -values are always appended to the end of the list -fast insert (amortized O(1) if possible) -fast iteration in key-order.

I've looked at trove, fastutil, etc. but couldn't find a multimap implementation using primitives (only normal maps)

any help is appreciated.

Thanks, Geert-Jan

like image 721
Geert-Jan Avatar asked Nov 14 '22 14:11

Geert-Jan


1 Answers

Have you considered implementing the multi-portion yourself using a primitive long -> Object-map and primitive int-set as the value?

like image 56
Tuure Laurinolli Avatar answered Dec 23 '22 11:12

Tuure Laurinolli