Implementing a sparse array in C# / fastest way to map integer to a specific bucket/range number

后端 未结 2 1753
我寻月下人不归
我寻月下人不归 2020-12-16 17:42

My initial problem is that I need to implement a very fast, sparse array in C#. Original idea was to use a normal Dictionary and wrap it in

2条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-16 17:56

    I, too, noticed that Dictionary is slow when the key is an integer. I don’t know exactly why this is the case, but I wrote a faster hash-table implementation for uint and ulong keys:

    • Efficient32bitHashTable and Efficient64bitHashTable

    Caveats/downsides:

    • The 64-bit one (key is ulong) is generic, but the other one (key is uint) assumes int values because that’s all I needed at the time; I’m sure you can make this generic easily.

    • Currently the capacity determines the size of the hashtable forever (i.e. it doesn’t grow).

提交回复
热议问题