我尝试优化以下循环。它对结构类型的std :: vector进行for循环。然后它检查是否有任何类型等于“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;
}
}
}
我想知道是否可以优化上面的代码排除 定义函数来执行此操作。
答案 0 :(得分:1)
这在很大程度上取决于上下文,例如
_type==ISIDE_WITH_MORE_ONE_INTER
点的相对频率是多少?如何订购积分? 只需对其进行分析,然后/想象/什么会使算法在集合中更快地拉链。
E.g。
"如果点已经被_type
索引/排序怎么办?" (您使用简单的equal_range(INSIDE_WITH_MORE_ONE_INTER)
调用来减少工作)
如果我不完成工作,而是懒惰地重新评估访问者_type
中type()
的值,该怎么办?&#34 ; (或者这是否会破坏常量?线程?)
等