次のルックアップテーブルを定義しています。
boost::unordered_map<std::string, STFRandomTreeFunctor*> functor_look_up_table;
ファンクターを呼び出すためにそれを使用するという考えですが、これは非常に遅く実行されているようです。最初は、ファンクターが呼び出す関数の実行に時間がかかる可能性があるためだと思いました。次のようにコードを置き換えました(つまり、への呼び出しを削除しましたfunctor()
)。
my_function(){
while(...){
STFRandomFunctor* f = functor_look_up_table.at(some_string);
...<do some other stuff>
}
}
それでも実行速度は遅くなりますが、行を削除するSTFRandomFunctor* f = functor_look_up_table.at(some_string);
とコードが大幅に高速化されます。ここのルックアップテーブルに間違った種類のデータ構造を使用していますか?もしそうなら、何が好ましいですか?