我正在使用MSVC 2010。
我正在尝试从列表中删除重复(不保留任何副本)
为什么这个代码在调试模式下慢100倍?
还有其他方法可以删除所有等效的对象并在调试模式下加快速度吗?
目前我无法使用调试。在发布的几秒钟内处理需要几分钟。
void SomeFunction()
{
std::list<Something> list;
std::list<Something>::iterator it1;
std::list<Something>::iterator it2;
for (it1 = list.begin(); it1 != list.end(); it1++)
{
for (it2 = list.begin(); it2!=list.end(); it2++)
{
if (it1->SomeValue() == it2->SomeValue())
{
if (it1 != it2)
{
list.erase(it1);
list.erase(it2);
it2 = list.begin();
it1 = it2++;
}
}
}
}
}
答案 0 :(得分:17)
通常,由于iterator debugging support,在Visual Studio中调试时STL非常慢。通过将_HAS_ITERATOR_DEBUGGING
设置为0,您可以大大提高速度。