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
I, too, noticed that Dictionary<K,V>
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:
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).
There are a 101 different ways to implement sparse arrays depending on factors like:
Most textbooks have a section on sparse array, just doing a Google comes up with lots of hits. You will then have to translate the code into C#, or just use the code someone else has written, I have found two without much effort (I don't know how good these are)