2010-06-23 5 views
0

J'ai une simple requête en cours d'exécution à la fois .NET 3.5 et .NET 4, quelque chose comme ceci:LINQ to SQL Performance dans .NET 4

var x = from o in Orders 
     join ot in OrderTypes on o.OrderTypeId equals ot.OrderTypeId 
     where or.OrderTypeName.Contains("sales") 
     select o; 
var y = x.ToList(); 

Le code identique fonctionne sur .NET 3.5 et .NET 4, se connecter à la même base de données, avec les deux fichiers dbml générés dans les versions respectées .NET. Les deux renvoie le nombre correct d'enregistrements (environ 350 enregistrements). Les tables de base de données sont indexées correctement. Les deux s'exécutent en mode débogage dans VS 2008 et VS 2010 respectivement. Lorsque je lance la requête dans T-SQL directement dans SQL Mgmt Studio, elle s'exécute rapidement, presque instantanément. Donc, ce n'est certainement pas un problème avec les objets DB.

Voici le problème: celui qui tourne sous .NET 3.5 s'exécute rapidement (comme il se doit, moins de 1 sec, je n'ai pas de mesure précise, mais c'est presque instantané). Mais celui qui tourne sous .NET 4 prend plus de 5 secondes.

Quelqu'un sait pourquoi est-ce? Ou ... aider?

+0

Lorsque vous exécutez ce en mode de sortie, en dehors de Visual Studio, vous voyez la même différence de performance? –

+0

Je commencerais par exécuter les deux exécutables dans le mode 'Release' et en dehors de l'environnement de développement. Si vous avez une telle différence de performance, les choses deviennent inquiétantes :-) –

+0

Je suis d'accord, c'est probablement parce que VStudio 2010 est plus lent que VStudio 2008 et que vous utilisez le débogueur. – Aren

Répondre

1

Vous pouvez essayez de désactiver IntelliTrace dans VS 2010.

+0

C'était l'Intellitrace, oui! Merci! –