まず、libmemcacheなどの既存のソリューションがニーズに合っているかどうかを確認します。
そうでない場合...
ハッシュマップはあなたの要件に対する明確な答えのようです。キーに基づいてo(1)ルックアップを提供します。最近のほとんどのSTLライブラリは、ある種のハッシュを提供しています。したがって、プラットフォームが提供するものを使用してください。
その部分が完了したら、ソリューションをテストして、デフォルトのハッシュアルゴリズムがニーズに対して十分なパフォーマンスを発揮するかどうかを確認する必要があります。
そうでない場合は、ネット上にあるいくつかの優れた高速ハッシュアルゴリズムを調べる必要があります
- 古き良き素数乗算アルゴ
- http://www.azillionmonkeys.com/qed/hash.html
- http://burtleburtle.net/bob/
- http://code.google.com/p/google-sparsehash/
これが十分でない場合は、自分でハッシュモジュールをロールすることができます。これにより、テストしたSTLコンテナーで発生した問題と、上記のハッシュアルゴリズムの1つが修正されます。結果は必ずどこかに投稿してください。
ああ、複数のマップがあるのは興味深いことです...おそらく、キーを64ビットnumとして使用し、上位ビットを使用して、それが属するマップを区別し、すべてのキーと値のペアを1つの巨大なハッシュに追加することで簡略化できます。基本的な素数ハッシュアルゴリズムで10万個程度のシンボルが完全に機能するハッシュを見てきました。
そのソリューションが何百ものマップと比較してどのように機能するかを確認できます..メモリプロファイリングの観点からはより良いと思います...この演習を行うことができたら、結果をどこかに投稿してください
ハッシュアルゴリズムよりも、メモリの継続的な追加/削除(回避できるか?)と、アプリケーションのパフォーマンスにとってより重要なCPUキャッシュ使用プロファイルである可能性があると思います。
幸運を