我定义了以下查找表:
boost::unordered_map<std::string, STFRandomTreeFunctor*> functor_look_up_table;
这个想法是用它来调用函子,但这似乎运行得很慢。一开始我以为是functor调用的函数可能运行时间长,我把代码替换为如下(即去掉了对 的调用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);
极大地加快了代码速度。我在这里的查找表中使用了错误的数据结构吗?如果是这样,什么是可取的?