Question

J'ai une question pour toute personne ayant de l'expérience sur i4o ou PLINQ. J'ai une grande collection d'objets (environ 400K) nécessaires pour interroger. La logique est très simple et directe. Par exemple, il existe une collection d'objets Personne. Je dois rechercher les personnes associées au même prénom, au même nom, à la date de naissance ou à la première initiale de Prénom / nom, etc. Il s'agit simplement d'un processus fastidieux qui utilise LINQ to Object.

Je me demande si i4o (http://www.codeplex.com/i4o )

ou PLINQ peut vous aider à améliorer les performances des requêtes. Quel est le meilleur? Et s'il y a une approche là-bas.

Merci!

Était-ce utile?

La solution

Avec 400 000 objets, je me demande si une base de données (en cours ou hors processus) ne constituerait pas une réponse plus appropriée. Ceci résume ensuite le processus de création d'index. En particulier, toute base de données supportera plusieurs index différents sur différentes colonnes, ce qui rendra les requêtes citées très supportables sans avoir à coder spécifiquement pour chacune (laissez simplement l’optimiseur de requêtes s’en inquiéter).

Travailler en mémoire peut être valide, mais vous devrez peut-être (avec vanilla .NET) faire beaucoup plus de gestion manuelle des index. À ce qu'il paraît, i4o ??mériterait certainement d’être étudié, mais je n’ai aucune donnée de comparaison existante.

Autres conseils

i4o: vise à accélérer l'interrogation à l'aide de linq à l'aide d'index, comme l'ancien jour de la base de données relationnelle.

PLinq: est conçu pour utiliser des cœurs de processeur supplémentaires pour traiter la requête en parallèle.

Si les performances sont votre objectif, en fonction de votre matériel, je vous dis que choisir I4o vous apportera une amélioration considérable.

Je n'ai pas utilisé i4o mais j'ai utilisé PLINQ.

Sans connaître les détails de la requête que vous essayez d'améliorer, il est difficile de dire laquelle (le cas échéant) aidera (e).

PLINQ permet le multitraitement des requêtes, le cas échéant. Cependant, il reste du temps lorsque le traitement en parallèle ne vous aidera pas.

i4o semble aider l’indexation, ce qui accélérera certains appels mais pas d’autres.

En bout de ligne, cela dépend de la requête en cours d'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top