プログラムのすべてのスポットを最適化すべきではないことを理解しているので、この質問は「学術的な」ものと考えてください。
私は最大100個の文字列とそれぞれの整数を持っています。
MSFT 1
DELL 2
HP 4
....
ABC 58
このセットは事前に初期化されているため、一度作成されると変更されることはありません。セットが初期化された後、私はそれをかなり集中的に使用するので、高速な検索ができると便利です。文字列はかなり短く、最大 30 文字です。マッピングint
も制限されており、1 ~ 100 の間です。
少なくとも、文字列が事前に初期化され、決して変更されないことを知っていれば、「1 バスケット 1 アイテム」マッピングになるハッシュ関数を「見つける」ことができるはずですが、おそらく他のハックがあります。
私が想像できる1つの最適化-最初のシンボルのみを読み取ることができます。たとえば、「D」で始まる文字列が「DELL」だけで、「D***」のような文字列を受け取った場合、その文字列を読み取る必要さえありません。それは明らかに「DELL」です。このようなルックアップは、「ハッシュマップ ルックアップ」よりも大幅に高速でなければなりません。(ここでは、ハッシュのシンボルのみを受け取ると仮定しましたが、常にそうであるとは限りません)
私の問題に対して、すぐに使用できる、または簡単に実装できるソリューションはありますか? 私はc ++とブーストを使用しています。
更新チェックしたところ、ティッカーの交換制限は、上記の 30 シンボルではなく 12 シンボルであることがわかりました。ただし、他の取引所では少し長いシンボルが許可される場合があるため、最大 20 文字の長さのティッカーで動作し続けるアルゴリズムを持つことは興味深いことです。