26 votes

liste<T> .RemoveAll () efficacité / optimisation du compilateur

En ce qui concerne l'efficacité, est-ce que quelqu'un sait si le compilateur est assez intelligent pour ne pas créer le tableau contenant 1, 3, 5 pour chaque itération de la boucle dans le code suivant?

 var foo = new List<int> { 1, 2, 3, 4, 5 };
foo.RemoveAll(i => new[] { 1, 3, 5 }.Contains(i));

Je le préfère pour la lisibilité, mais pas pour les performances.

1voto

Theodor Zoulias Points 1088

Puisque le compilateur n'est pas si intelligent, nous devons le déjouer.

 var foo = new List<int> { 1, 2, 3, 4, 5 };
var bar = new HashSet<int>() { 1, 3, 5 };
foo.RemoveAll(i => bar.Contains(i));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X