10
votes

Array de base Toute () VS Longueur

J'ai un tableau simple d'objets:

if(contacts.Length == 0) return;


3 commentaires

Dupliqué possible de Quelle méthode fonctionne mieux:. Nan () vs .Count ( )> 0?


@ al-khwārizmī pas vraiment, je poserais la même question sur compter () et la longueur et ma dernière question est toujours debout - comment puis-je savoir sans aller ici pour chaque méthode LINQ


Il est très douteux que l'une de ces formes soit le goulot d'étranglement dans la performance de votre application. Si vous avez défini les objectifs de performance, le code écrit, le profilé et situé les points chauds / goulots d'étranglement, c'est le temps de vous inquiéter de savoir s'il existe différentes variantes qui peuvent offrir de meilleures performances. Au lieu de cela, ce que vous devriez généralement écrire est Clear code qui exprime vos intentions .


5 Réponses :


3
votes

Oui, il est plus lent, car il est itérale sur les éléments.Utilisant la propriété la propriété est meilleure. Mais je ne pense toujours pas qu'il y ait une différence car tout renvoie vrai dès qu'il trouve un élément.


0 commentaires

4
votes

Si vous avez une matrice, la longueur est dans une propriété de la matrice. Lorsque vous appelez, vous êtes itérer le tableau pour trouver le premier élément. La configuration de l'énumérateur est probablement plus chère puis de lire la propriété de longueur.


0 commentaires

7
votes

Il y a deux tout () méthodes: 1. une méthode d'extension pour ienumerable 2. Une méthode d'extension pour iQuéryable

Je suppose que vous utilisez la méthode d'extension pour ienumerable . Celui-ci ressemble à ceci: xxx

essentiellement, à l'aide de longueur == 0 est plus rapide car il ne s'agit pas de créer un itérateur pour le tableau.

Si vous souhaitez vérifier le code qui ne vous appartient pas (c'est-à-dire le code qui a déjà été compilé), comme tout , vous pouvez utiliser une sorte de Désassemble. Jetbrains en a un gratuitement - http://www.jetbrains.com/decompiler/


0 commentaires

4
votes

Je dois totalement être en désaccord avec les autres réponses. Cela ne fait certainement pas itérale sur le tableau . Il sera légèrement plus lent, car il doit créer un objet itérateur de tableau et appelle movenext () une fois , mais ce coût devrait être négligeable dans la plupart des scénarios; Si tout () rend le code plus lisible à vous, n'hésitez pas à l'utiliser.

Source: décompilé énumérable.Le code.


0 commentaires

4
votes

dans votre cas même longueur code> est légèrement meilleur em>: xxx pré>

mais la différence semble être négligeable em> . P>

dans cas générale em>, cependant, tout code> est meilleur, car il s'arrête sur le premier élément trouvé EM> P >

 // Itterates until 1st item is found 
 if (contains.Any(x => MyCondition(x)))
   return;

 // Itterates the entire collection 
 if (contains.Select(x => MyCondition(x)).Count() > 0) 
   return;


0 commentaires