2011-04-18 5 views
0

Possible en double:
Is it better to call ToList() or ToArray() in LINQ queries?Laquelle est une chaîne plus rapide [] Liste <string>

Salut,

Je code suivant

static void Main(string[] args) 
     { 
      const string FileName = @"c:\words"; 
      HashSet<string> wordLookup = new HashSet<string>(File.ReadAllLines(FileName), StringComparer.InvariantCultureIgnoreCase); 
      List<string> wordList1 = wordLookup.ToList(); 
      string[] wordList2 = wordLookup.ToArray(); 
     } 

pourrait tout un s'il vous plaît dire que l'on est plus rapide

List<string> wordList1 = wordLookup.ToList(); 

ou

string[] wordList2 = wordLookup.ToArray(); 
+1

Et vous ne vous préoccupez pas de la rapidité et de la facilité avec lesquelles les recherches d'articles, la copie/le clonage, l'insertion/le retrait d'éléments, etc. –

+2

Écrivez une boucle et utilisez la classe StopWatch. –

+2

Tout ce que je peux faire, c'est soupirer. Et ces deux lignes de code fonctionnent plus vite que je ne peux soupirer. – BoltClock

Répondre

1

List<T> utilise en interne tableau, donc je suppose qu'ils vont être tout aussi rapide. Cependant, cela n'a pas d'importance - utilisez ce qui rend votre code plus clair.

0

Ma réaction initiale serait de dire que ToArray serait plus rapide, mais honnêtement, la seule façon de le dire est de le chronométrer soi-même.

+1

cela vaut mieux être un commentaire ... –

+2

Ma réaction initiale serait le contraire. Dans les deux cas, un tableau sera réaffecté à plusieurs reprises (longueur à chaque fois qu'il est plein) lorsque la source est énumérée. Dans le cas de ToList, le tableau réaffecté sera interne à la liste, et la liste résultante peut être retournée telle quelle. Dans le cas de ToArray, il existe généralement une étape supplémentaire nécessaire pour copier les données résultantes dans un tableau de la bonne longueur. – Joe

Questions connexes