質問

私はテキストの60ギガバイトを解析し、マップに挿入し、検索をたくさんやってます。 私はちょうどブースト:: unordered_setを使用して開始し、後押し:: unordered_map 私のプログラムは、これらの容器に充填開始すると、彼らはどんどん大きく成長し始めると、これはこれらのコンテナにメモリを割り当てる事前にすることをお勧めだろうかと思いまして。 何かのようなもの     (N)を:: get_allocatorを()MYMAP割り当てます。 ?

または私はちょうど割り当て、自分自身で要因を成長把握するためにそれらを残す必要がありますか? コードは

このように見えます
boost::unordered_map <string,long> words_vs_frequency, wordpair_vs_frequency;   
boost::unordered_map <string,float> word_vs_probability, wordpair_vs_probability,
           wordpair_vs_MI;                  
//... ... ...                                   

N = words_vs_frequency.size();
long   y =0; float MIWij =0.0f, maxMI=-999999.0f;
for (boost::unordered_map <string,long>::iterator i=wordpair_vs_frequency.begin(); 
                     i!=wordpair_vs_frequency.end(); ++i){
if (i->second >= BIGRAM_OCCURANCE_THRESHOLD)
    {
    y++;
    Wij = i->first;
    WordPairToWords(Wij, Wi,Wj);
    MIWij =  log ( wordpair_vs_probability[Wij] /
             (word_vs_probability[Wi] * word_vs_probability[Wj]) 
            );

    // keeping only the pairs which MI value greater than 
    if (MIWij > MUTUAL_INFORMATION_THRESHOLD)
        wordpair_vs_MI[ Wij ] = MIWij;
    if(MIWij > maxMI )
        maxMI = MIWij; 
    }

   }

事前に感謝します。

役に立ちましたか?

解決

私はそれを使用すると、1つの方法は、他のより良い動作するかどうかを示す確かなデータを生成できるようになる両方の方法を、しようとするだろう。私たちは、この方法が最適になるかについて、すべての日を推測することができますが、ほとんどのパフォーマンスの問題と同様に、行うための最善のことは、それを試してみると何が起こるか見て(そして実際に固定必要な部分を修正)です。

言われていること、ブースト著者は、それはかなり可能性として-で正常に動作しますので、非常にスマートであるように見えます。あなただけテストして参照してくださいする必要があります。

scroll top