Я пытаюсь оптимизировать цикл ниже. Он выполняет цикл for std :: vector типа struct. то он проверяет, имеет ли какой-либо член с типом, равным "INSIDE_WITH_MORE_ONE_INTER". если он найдет такого члена, он применит к нему функцию и, наконец, на основе результата он может сохранить тип изменения в "NOT_DEFINED".
for(pnt_vec_iter pnt_iter = newpnTs.begin(); pnt_iter != newpnTs.end(); pnt_iter++)
{
if(pnt_iter->_type == INSIDE_WITH_MORE_ONE_INTER)
{
if(!DoublePointsOnEdgeCheck(*this, pnt_iter->_face, pnt_iter))
{
pnt_iter->_type == NOT_DEFINED;
}
}
}
Мне интересно, можно ли оптимизировать код выше, исключая определение функции для этого.
Это слишком сильно зависит от контекста, например
_type==ISIDE_WITH_MORE_ONE_INTER
? Как упорядочиваются точки?Просто просмотрите его и/представьте/, что бы ускорить алгоритм zip через набор.
Например
"Что, если точки уже были проиндексированы/отсортированы по _type
?" (вы должны использовать простой equal_range(INSIDE_WITH_MORE_ONE_INTER)
чтобы уменьшить работу)
Что делать, если я вообще не выполняю эту работу, но вместо этого лениво переоцениваю значение для типа _type
в type()
accessor type()
? "(Или это слишком сильно нарушает константу? Threading?)
И т.п.