Ce qui est plus rapide: Union ou Concat?

Créé 26/08/2009 à 22:48
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
49

Union supprime les doublons. Concat ne fonctionne pas.

Ainsi, ils produisent des résultats différents si les sources, soit contiennent tous les éléments en commun, ou avez des doublons internes.

Si vous ne pouvez garantir qu'il n'y a pas de doublons, ou s'il y a peu et que vous ne se soucient pas de les avoir dans votre sortie, Concat seront plus rapides car il n'y a pas besoin de tester chaque valeur par rapport à ce qui a déjà été donné.

Cependant, s'il y a beaucoup de doublons et vous ne les avez pas besoin, le traitement supplémentaire dans l'Union pour éliminer les dupes peut être compensé par les économies réalisées dans votre code qui consume les résultats.

Créé 26/08/2009 à 22:50
source utilisateur

voix
9

Vous souciez-vous seulement la vitesse d'exécution? Depuis combien de temps vous faut-il pour traiter un élément lorsque vous recevez?

Concatest plus simple - il n'a pas besoin d'accomplir un traitement lui - même, ou un tampon les résultats qu'il est déjà revenu. Cependant, il produira 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, Concatpeut finir efficacement être plus lente.

Créé 26/08/2009 à 22:51
source utilisateur

voix
3

Ce qui a été dit ci - dessus est juste. Voici juste un peu plus pour certains cas particuliers :

Si vous devez concaténer par exemple deux listes et si vous avez besoin toute vitesse, pensez à utiliser le rendement . Bien sûr , cela est beaucoup moins souple et confortable que l' Union ou Concat dans LINQ. Par conséquent , il n'a de sens que dans des cas particuliers.

Cette propriété, par exemple fournira les mêmes que List1.Concat (List2)

    public IEnumerable<MyObject> AllObjects
    {
        get
        {
            foreach (MyObject o1 in List1)
                yield return o1;

            foreach (MyObject o2 in List2)
                yield return o2;
        }
    }
Créé 21/07/2014 à 10:53
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more