問題描述:兩個List<>物體,通過ID 進行比較 由于資料量過大,想分步進行比較 ,根據list的條數,來動態創建多個執行緒,例如每個執行緒執行1000行資料進行比較,這樣回圈比較怎么弄呢,各位大神幫幫幫
uj5u.com熱心網友回復:
System.Threading.Tasks.Parallel
要拆成幾份,i就傳幾,然后實際方法進行分頁獲取資料
uj5u.com熱心網友回復:
并行的速度比單個執行緒速度還慢呀
uj5u.com熱心網友回復:
并行的速度比單個執行緒速度還慢呀
uj5u.com熱心網友回復:
你說的比較,是指什么比較方式呢?uj5u.com熱心網友回復:
比較兩個list<>里面的某個元素相等foreach (var item in listentity3)
{
if (listentity2.Exists(P => P.就診ID == item.就診ID && P.門診號 == item.門診號 && P.姓名 == item.姓名 && P.交易費用總額 == P.交易費用總額))
{
listentity1.Remove(item);
}
else
{
listentity4.Add(item);
}
}
uj5u.com熱心網友回復:
并行不是絕對會比單執行緒快。
因為并行也有開銷。資料比較多時,那么并行可能比單執行緒快。
這里,你的兩個list資料大概有多少呢
uj5u.com熱心網友回復:
比較兩個list<>里面的某個元素相等
你說的比較,是指什么比較方式呢?
foreach (var item in listentity3)
{
if (listentity2.Exists(P => P.就診ID == item.就診ID && P.門診號 == item.門診號 && P.姓名 == item.姓名 && P.交易費用總額 == P.交易費用總額))
{
listentity1.Remove(item);
}
else
{
listentity4.Add(item);
}
}
并行不是絕對會比單執行緒快。
因為并行也有開銷。資料比較多時,那么并行可能比單執行緒快。
這里,你的兩個list資料大概有多少呢
比較兩個list<>里面的某個元素相等
你說的比較,是指什么比較方式呢?
foreach (var item in listentity3)
{
if (listentity2.Exists(P => P.就診ID == item.就診ID && P.門診號 == item.門診號 && P.姓名 == item.姓名 && P.交易費用總額 == P.交易費用總額))
{
listentity1.Remove(item);
}
else
{
listentity4.Add(item);
}
}
并行不是絕對會比單執行緒快。
因為并行也有開銷。資料比較多時,那么并行可能比單執行緒快。
這里,你的兩個list資料大概有多少呢
基本上都是上萬的資料,也有十幾萬的,我有了執行緒測驗要快與并行,現在想再快一點用回圈來做 這種方法只回圈了部分
foreach (var item in listnewsum)
{
IN.listnew = item;
Thread TH = new Thread(IN.Insert);
TH.Start();
}
第二種方法沒有執行資料
new Thread(() =>
{
foreach (var item in listnewsum)
{
IN.listnew = item;
Parallel.Invoke(IN.Insert);
}
}).Start();
uj5u.com熱心網友回復:
我就弱弱的問一句,為什么不在資料庫進行比較,也就僅僅是一個join的陳述句。只要服務器不差,百萬的比較也很快。uj5u.com熱心網友回復:
你可以根據 List 的大小,先分成幾個批,如1000個一批,再對這些批進行回圈,并行開執行緒處理。注意 List<T>不是執行緒安全的,使用多執行緒處理要小心。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/132249.html
標籤:C#
