2013-07-08 98 views
0

我在尋找驗證,我在想的是一個理想的解決方案。PLINQ和大數據搜索

我有一個來自客戶的數百萬'實體'列表。我想比較每個實體與另一個(或幾個其他)可以擁有數百萬個實體的列表,並記錄命中。

一個實體通常是一個具有姓名/號碼/出生日期等的人,但可以是商業名稱之類的東西。

我有一個項目,將請求作爲一個實體xml進行搜索,並將請求和結果xml保存到數據庫中。

我需要的是在可配置數量的線程上運行該項目,在其他人完成時產生新線程。 PLINQ是否是一個理想的解決方案?

所以說我想要10個線程。我想採取前10個實體併產生10個線程。當第一個線程結束時,第11個實體應該從一個新的線程開始,直到所有的線程都被搜索完畢。

謝謝任何​​輸入,我不太懂並行。

回答

0

如果您打算將數據保存到數據庫中,爲什麼不只是批量導入數據並使用查詢來加入這兩組數據?這應該比在內存中執行要快得多。我不想看到你正在使用數百萬個實體的內存。

如果您必須在內存中執行此操作,則使用PLinq可能會更快。線程創建和上下文切換存在開銷。用PLinq,你應該讓引擎確定線程分配。此時您應該很少創建線程。

但是,如果您正在比較的列表是相對靜態的,您可能會從使其成爲詞典並依靠查找鍵獲益更多,因爲您不必遍歷整個列表中的每個項目正試圖找到。