C++ map insertion and lookup performance and storage overhead

前端 未结 8 2036
旧巷少年郎
旧巷少年郎 2021-02-02 10:47

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

相关标签:
8条回答
  • 2021-02-02 11:49

    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.

    0 讨论(0)
  • 2021-02-02 11:52

    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.

    0 讨论(0)
提交回复
热议问题