Temps de boucle for & foreach avec accès tableau d'objets

Signaler
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Bonjour,

J'ai fais une petite expérience dont le résultat me file des boutons, et j'aurais aimé avoir des explications précises.

J'ai un tableau contenant 9000 objets de type FileInfo.

Je fais une boucle "for" pour tester un membre de ces éléments et j'obtiens les temps suivant :
Temps de parcours de 0 à 3000 : 5.027ms
Temps de parcours de 3000 à 6000 : 68.414ms
Temps de parcours de 6000 à 9000 : 329.953ms

J'en déduis qu'à chaque fois que j'accède à un élément du tableau, une recherche est réalisée ?! je suppose qu'en mémoire c'est une liste chainée ?

Ce qui m'étonne surtout, c'est que j'obtiens le même résultat avec un "Foreach".
C# n'est pas capable de conserver un pointeur sur le dernier élément de la boucle ?!

Merci d'avance pour vos réponses.

Voici mon code :
FileInfo[] ArchivesList_L = new DirectoryInfo(archives_Path_L).GetFiles(); //9000 objets

                 int j_L = 0;
                  for (int i_L = 0; i_L < ArchivesList_L.Length; i_L++)
                  {
                      if (i_L % 3000 == 0)
                         { //Calcul temps }

                      if (ArchivesList_L[i_L].Length > 0)  //Toujours vrai
                          j_L++;
                  }

                  int j_L = 0;
                  foreach (var fileInfo_L in ArchivesList_L)
                  {
                      if (j_L % 3000 == 0)
                          { //Calcul temps }

                      if (fileInfo_L.Length > 0) //Toujours vrai
                          j_L++;
                  }