Pre-sizing the hash so that it does not need to expand dynamically should save a lot of time.

Also, try to get rid of the nesting in the hash by concatenating the components of the key and using the concatenation as key to a flat hash.

If that is still not fast enough, you will probably have to implement your own hash in C, or reconsider if you can come up with a clever algorithm that does not depend on instant access to a huge data structure (do you really need all that data?)