Salut,

je poste ici car j'ai remarqué qu'un parcours de conteneur avec itérateur sous visual studio (visual 2008 express) est plus lent qu'un parcours par indices.

En gros ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
for (vector<MyClass> it = myVector.begin(); it != myVector.end(); ++it)
{
    it->myFunction();
    //...
}
va être plus lent que ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
for (size_t i = 0; i < myVector.size(); ++i)
{
    myVector[i].myFunction();
    //...
}
Je compile en release avec toutes les opti de vitesse activées (je pense) et pour un grand nombre d'objets, la méthode 1 est plus lente que la méthode 2.

Je pense que visual doit vérifier la validité à chaque tour de boucle ou quelque chose comme ca. Y aurait il une option que j'ai oublié d'activer ou quelque chose ?

Je trouve ca dommage parceque du coup ca ne me pousse pas a utiliser les itérateurs alors que c'est une manière plus élégante de faire ses boucles.

Quelqu un a déjà remarquer ca ? Avez vous une solution ?

Merci beaucoup