Bonjour,
Je possède une BDD de type SQL Server dans laquelle j'ai des auteurs et des publications. Elle est assez grosse (640Mo). Ma table AUTHOR comporte un peu plus de 900 000 auteurs.Je recherche par exemple un auteur suivant son nom, notamment s'il contient la chaine que je lui passe en paramètre. J'ai testé une version sans AsParallel(), et une avec.
Les résultats que j'obtiens sont assez bizarre!
Voici le code de ma méthode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public static ObservableCollection<AUTHOR> SearchAuthorsByName(String Name)
{
using (DataBaseDataContext Base = new DataBaseDataContext())
{
var Query = (from A in Base.AUTHOR//.AsParallel()
where A.AUTHOR_NAME.Contains(Name)
orderby A.AUTHOR_NAME ascending
select A).Take(1000);
System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
Console.WriteLine(Query.Count());
long elapsed = sw.ElapsedMilliseconds; // or sw.ElapsedTicks
Console.WriteLine("Total query time: {0} ms", elapsed);
return (new ObservableCollection<AUTHOR>(Query));
}
} |
L'appel de la méthode:
ObservableCollection<AUTHOR> oc = Query.SearchAuthorsByName("ha");
Sans AsParallel(), j'obtiens en console:
125526
Total query time: 10525 ms
Appuyez sur une touche pour continuer...
Et avec AsParallel():
98378
Total query time: 12245 ms
Appuyez sur une touche pour continuer...
Voila, je comprends pas pourquoi le nombre d'auteurs trouvés est différent, d'une part, et pourquoi la requête PLINQ est plus longue?!
J'ai un double coeur: AMD Turion 64 X2 Mobile Technology TL-50, 1.61GHz
Voila, si vous avez des idées, help me!
Partager