2009-03-02 8 views
3

i4oまたはPLINQの経験がある方には質問があります。私はクエリに必要な大きなオブジェクトコレクション(約400K)を持っています。ロジックは非常に簡単で簡単です。たとえば、Personオブジェクトのコレクションがあります。同じfirstName、lastName、datebirth、またはFirstName/lastnameなどの最初の頭文字に一致する人物を見つける必要があります。LINQ to Objectを使用するだけで時間がかかります。大規模なコレクションの場合、i4oとPLINQの比較

は、私は疑問に思っている場合i4o (http://www.codeplex.com/i4o

またはPLINQがクエリのパフォーマンスを向上させることに役立つことができます。どちらがいいですか?そこに何らかのアプローチがあれば。

ありがとうございます!

答えて

5

400kのオブジェクトでは、データベース(インプロセスまたはアウトプロセスのいずれか)がより適切な回答ではないかと思います。これにより、索引作成プロセスが抽象化されます。特に、どのデータベースでも、異なる列の複数の異なる索引をサポートするため、それぞれの索引を個別にコーディングしなくても非常にサポートされるようになります(問合せオプティマイザがそれを心配させるだけです)。

メモリ内での作業は有効かもしれませんが、(vanilla .NETを使用すると)より多くの手動インデックス管理が必要になる場合があります。その音によって、i4oは確かに調べる価値がありますが、既存の比較データはありません。

+0

ありがとう、マーク!私はこれらの400Kのオブジェクトをいくつかのルールに基づいて照合する必要があるからです。私の元の投稿の例として、私は "John Smith"の記録と一致するものを見つける必要があります。それは "Jスミス"または "ジョンS"または一致する名前soundex、等... –

+0

右...すべては、TSQLで行うことができます... –

+0

私は最初の名前と姓があると仮定していますあなたは=、LIKE、SOUNDEXなどのオプションの範囲を持っています –

0

私はi4oを使用していませんが、私はPLINQを使用しています。

あなたが改善しようとしているクエリの詳細がわからない場合は、どのようなものがあれば助けになるとは言い難いです。

PLINQでは、クエリのマルチプロセッシングが可能です。しかし、並列処理が役に立たない時があります。

i4oはインデックス作成に役立つように見えるため、一部の通話はスピードアップされますが、他の通話はスピードアップされません。

ボトムラインは、実行されているクエリによって異なります。

3

i4o:古いリレーショナルデータベースのようなインデックスを使用してlinqを使用して検索を高速化することを目的としています。

PLinq:追加のCPUコアを使用してクエリを並行処理することを意味します。

あなたのハードウェアによっては、性能があなたの目標である場合、私はi4oといっしょに言うと改善するでしょう。

関連する問題