是否可以在以下循环中删除分支。所有迭代器都来自容器类型std::map<type_name, T>
record_iterator beginIter = lastLookup_;
record_iterator endIter = lastLookup_;
++endIter;
for(;endIter != end(); ++beginIter, ++endIter){
time_type now = beginIter->first;
if(ts == now){
lastLookup_ = beginIter;
return beginIter;
}else if(ts > now && ts <= endIter->first){
lastLookup_ = beginIter;
return endIter;
}
}
该算法试图解决的问题是优化前向查找,该位置被假定为与上次查找的位置相同或(不太远)向前。理想情况下,我保留了上次查找位置的迭代器,并线性前进。但这似乎具有相同的性能,
record_iterator it= sliceMap_.find(ts);
if(it !=end()){
return it;
}else{
return sliceMap_.upper_bound(ts);
}
我觉得问题出在分支上,所以可以在这段代码中删除分支,这样我就可以分析速度的不同了吗?