Lequel est le plus rapide: Union ou Concat?
Je ne se soucient pas de l'ordre des éléments.
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.union.aspx
http://msdn.microsoft.com/en-us/library/bb302894.aspx
source d'informationauteur Jader Dias | 2009-08-26
Vous devez vous connecter pour publier un commentaire.
Union supprime les doublons.
Concat ne pas.
Donc, ils produisent des résultats différents si les sources contiennent tous les éléments en commun, ou de toute internes des doublons.
Si vous pouvez garantir il n'y a pas de doublons, ou si il y a peu et vous ne se soucient pas de les avoir dans votre sortie, Concat sera plus rapide car il n'y a pas besoin de tester chaque valeur par rapport à ce qui a déjà été donné.
Cependant, si il y a beaucoup de doublons et vous n'en avez pas besoin, le traitement supplémentaire dans l'Union pour supprimer les doublons peuvent être compensés par les économies dans votre code qui utilise les résultats.
Ne vous ne se soucient que de la vitesse d'exécution? Combien de temps prenez-vous pour traiter un élément lorsque vous la recevez?
Concat
est plus simple - il n'a pas besoin d'effectuer tout le traitement lui-même, ou en mémoire tampon les résultats qu'il est déjà retourné. Cependant, il va produire plus de résultats s'il y a des éléments dans l'intersection. Si vous allez prendre beaucoup de temps pour traiter chaque résultat,Concat
peut finir par efficacement être plus lent.Ce qui a été dit ci-dessus est droite. Ici est juste un peu plus pour certains cas spéciaux:
Si vous avez à concaténer, par exemple, deux listes et si vous avez besoin de la pleine vitesse, pensez à utiliser rendement. Bien sûr, cela est beaucoup moins souple et plus confortable que Union ou Concat dans Linq. Par conséquent, il n'a de sens qu'en des cas particuliers.
Cette propriété, par exemple fournir le même que List1.Concat(Liste 2)