0

私が考えていることが理想的な解決策であるという検証を探していました。

顧客からの数百万の「エンティティ」のリストがあります。各エンティティを、何百万ものエンティティを持つことができる別の (または他のいくつかの) リストと比較し、ヒットを記録したいと考えています。

エンティティは通常、名前/番号/生年月日などを持つ人物ですが、商号のようなものにすることもできます。

リクエストを 1 つのエンティティ xml として受け取り、リクエストと結果の xml を検索してデータベースに保存するプロジェクトがあります。

必要なのは、構成可能な数のスレッドでそのプロジェクトを実行し、他のスレッドが完了すると新しいスレッドを生成することです。PLINQ はこれに対する理想的なソリューションですか?

10 個のスレッドが必要だとします。最初の 10 個のエンティティを取得して、10 個のスレッドを生成したいと考えています。最初のスレッドが終了すると、すべてが検索されるまで、11 番目のエンティティが新しいスレッドで開始されます。

ご意見ありがとうございます。私は並列処理に精通していません。

4

1 に答える 1

0

いずれにしてもデータベースに保存する場合は、データを一括インポートして、クエリを使用して 2 つのデータ セットを結合してみませんか? これは、メモリ内で実行するよりもはるかに高速に実行されるはずです。あなたが何百万ものエンティティで消費しているメモリを見るのは嫌です。

メモリ内で実行する必要がある場合は、PLinq を使用すると高速になる場合があります。スレッドの作成とコンテキストの切り替えにはオーバーヘッドがあります。PLinq では、エンジンにスレッドの割り当てを決定させる必要があります。この時点で明示的にスレッドを作成することはほとんどありません。

ただし、比較対象のリストが比較的静的な場合は、検索しようとしている各アイテムのリスト全体をスキャンする必要がないため、それを辞書にしてルックアップのキーに依存することでより多くのメリットが得られる場合があります。 .

于 2013-07-08T19:34:11.303 に答える