I would like to store a mapping of an integer
key to a float
value in-memory.
I have roughly 130 million keys (and, accordingly, 130 million v
If your keys are unchanging, you might consider a perfect hash function as an alternative to a standard container.
I don't know what obstacles you'll run into with a dataset of that size, but it might be worth spending a few minutes experimenting.
Considering the vast amount of memory used, you must also consider that any memory access in searching will result in a memory cache fault.
In this regard a mixed solution of a small hashmap as first layer and sorted vectors for the buckets is probably the best.
The idea is to keep the hashtable index in the cache memory, and to search in smaller sorted containers to reduce the number of cache faults.