J’utilise MSVC 2010.
J’essaie de supprimer les doublons (sans en garder aucun) d’une liste
Pourquoi ce code est-il 100 fois plus lent en mode débogage?
Existe-t-il un autre moyen de supprimer tous les objects équivalents et de le rendre plus rapide en mode débogage?
C’est au point que je ne peux pas utiliser le débogage pour le moment. Cela prend quelques minutes à traiter alors que quelques secondes sont écastings.
void SomeFunction() { std::list list; std::list::iterator it1; std::list::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++; } } } } }
En général, STL est très lent lors du débogage dans Visual Studio en raison de la prise en charge du débogage par l’ iterator . Vous pouvez accélérer considérablement cette opération en définissant _HAS_ITERATOR_DEBUGGING
sur 0.