J'ai fait un test simple pour savoir quel conteneur STL était le plus rapide quand on marchais dans ceux ci avec un itérateur, entre vector et list.
J'ai donc crée un vecteur de 10 entier et une liste de 10 entier.
Ensuite, j'ai fait créer une boucle for qui boucle 1000000 de fois, et dans cette boucle for, j'ai marcher sur tous les éléments du vecteur et de la liste.
Je ne répète pas le code pour la liste qui est identique, sauf pour une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 clock_t vector_ticks = clock(); for (int i = 0; i < 1000000; i++) { for (vector<int>::iterator it = v.begin (), itend = v.end (); it != itend; it++) { } } vector_ticks = clock() - vector_ticks;
J'ai imprimé les résultats sur la console:
pour le vecteur (pour mon ordinateur): 15382
Pour la liste (pour mon ordinateur): 15288
la liste est donc un peut plus rapide.
Ensuite, me suis demander ce que cela ferais si je marchais le même nombre de fois dans un tableau.
résultat: 16
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for (int i = 0; i < 1000000; i++) { for (int j = 0; j < 10; j++) { } }
Uniquement 16 battements sur mon ordinateur. contre un peut plus de 15000 pour la liste et le vecteur.
Je me suis dis que la différence était trop importante, donc j'ai essayé quelque chose d'autre:
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 vector<int>::iterator it = v.begin (), itend = v.end (); vector_ticks = clock(); for (int i = 0; i < 1000000; i++) { for (; it != itend; it++) { } } vector_ticks = clock() - vector_ticks;
vecteur: 94 (mais monte parfois à 123)
liste: 93 (mais monte parfois à 128)
tableau: 16 (reste toujours à 16)
parfois le vecteur est à 98 et la liste a 120, et parfois c'est le vecteur à 120 et la liste à 98. Donc je pense que l'utilisation d'un tableau ou d'une liste pour aller sur tous les éléments est la même chose.
faite donc bien attention ou vous placez le code pour définir vos iterator
Edit: Ceci est en mode debug
Partager