J'écris à un gestionnaire de Mesh Rendering et je pense que ce serait une bonne idée de regrouper toutes les maillages utilisant le même shader, puis de les rendre, je suis dans cette passe. J'utilise actuellement une boucle foreach, mais je me demandais si l'utilisation de Linq pourrait augmenter mes performances.
Réponses
Trop de publicités?Pourquoi LINQ devrait-il être plus rapide? Il utilise également des boucles en interne.
La plupart du temps, LINQ sera un peu plus lent car il introduit des frais généraux. N'utilisez pas LINQ si vous vous souciez beaucoup de la performance. Utilisez LINQ parce que vous voulez un code plus court, mieux lisible et maintenable.
LINQ-to-Objets généralement va ajouter un peu marginal des frais généraux (plusieurs itérateurs, etc). Il a encore à faire les boucles, et a délégué l'invoque, et ont généralement pour une déférence pour obtenir capturé variables etc. Dans la plupart des code ce sera pratiquement indétectable, et plus de conférée par la plus simple à la compréhension du code.
Avec d'autres fournisseurs LINQ comme LINQ-to-SQL, puis depuis la requête peut filtrer sur le serveur, ça devrait être beaucoup mieux qu'un appartement foreach
, mais plus probablement, vous n'auriez pas fait une couverture en "select * from foo"
de toute façon, donc ce n'est pas nécessairement une comparaison équitable.
Re PLINQ; le parallélisme peut réduire les écoulé le temps, mais le total des temps CPU sera généralement augmenter un peu la raison pour les frais généraux de la gestion des threads, etc.
Linq est plus lent maintenant, mais pourrait aller plus vite à un moment donné. La bonne chose à propos de Linq est que vous n'avez pas à vous soucier de la façon dont cela fonctionne. Si une nouvelle méthode est conçue pour être incroyablement rapide, les employés de MS peuvent l’appliquer sans même vous le dire et votre code serait beaucoup plus rapide.
Plus important encore, Linq est simplement beaucoup plus facile à lire. Cela devrait être une raison suffisante.
Vous obtiendrez peut-être de meilleures performances si vous utilisez Linq en parallèle pour plusieurs cœurs http://msdn.microsoft.com/en-us/library/dd460688.aspx