I read a few articles about hashtables and the problem with collisions (https://preshing.com/20110504/hash-collision-probabilities/). So I came up with a key algorithm using power functions to create unique keys from strings using only alphanumeric characters. So by precomputing the keys as doubles I get a lookup improvement of anywhere from 43% to 90%!
Below are some tests where the dictionary has 370,102 unique words and 100,000 lookups were performed for each test:
Performce Test with NET string key dictionary
Total Time for all look ups: 0.04 seconds!
__________________________________
Performce Test with NET double key dictionary
Total Time for all look ups: 0.029 seconds!
__________________________________
Performce Test with NET string key dictionary
Total Time for all look ups: 0.053 seconds!
__________________________________
Performce Test with NET double key dictionary
Total Time for all look ups: 0.028 seconds!
__________________________________
Performce Test with NET string key dictionary
Total Time for all look ups: 0.041 seconds!
__________________________________
Performce Test with NET double key dictionary
Total Time for all look ups: 0.028 seconds!
Ultimately the key generator will be modified to work with numerical ranges so fuzzy states can be looked up using a hashtable.