我一直在編寫一個程序,它有一個100,000個元素的列表,我必須處理具有不同條件的所有元素。這最多不需要太多時間3秒。在此之後,我有一個有效的條目列表和我的信號列表,其中有100000個元素。通常新的列表大小爲6K - 7K。主要問題是當我使用List.Remove函數或其他任何方式從100K元素中刪除無效元素時,它的速度太慢。列表花費的時間太多
請指導我是否應該使用其他任何東西,然後是LIST,或者我也可以使用此代碼做些事情。
我包括我試過的所有代碼。
for(int k = 0; k < initialList.Count;k++)
{
combo c = initialList.ElementAt(k);
if(invalidEntries.Contains(c))
{
smartString.Append(c.number1.ToString());
smartString.Append(c.number2.ToString());
smartString.Append(c.number3.ToString());
smartString.Append(c.number4.ToString());
smartString.Append(c.number5.ToString());
smartString.Append(" Sum : ");
smartString.Append(c.sum.ToString());
smartString.AppendLine();
InvalidCombo.AppendText(smartString.ToString());
smartString.Clear();
}
else
{
smartString.Append(c.number1.ToString());
smartString.Append(c.number2.ToString());
smartString.Append(c.number3.ToString());
smartString.Append(c.number4.ToString());
smartString.Append(c.number5.ToString());
smartString.Append(" Sum : ");
smartString.Append(c.sum.ToString());
smartString.AppendLine();
validCombo.AppendText(smartString.ToString());
smartString.Clear();
}
}
而且
for(int k=0;k<100000;k++)
{
combo c = initialList.ElementAt(k);
if (!invalidEntries.Contains(c))
validEntries.Add(c);
}
我也曾嘗試卸下襬臂的功能,但我認爲不能單把它。所以任何建議/解決方案?
這是U/I組件還是集合?如果您試圖在U/I組件中顯示100K項目,也許您需要重新考慮您的設計? – OldProgrammer
嘗試使用StringDictionary而不是列表,並讓程序在從字典中刪除項目時提供字典條目的關鍵字。字典比列表更容易搜索。 –
@OldProgrammer是它的一個UI程序,但列表是在代碼中生成的。它是一個結構列表,結構有6個整數元素。在ui中顯示的時間不是,但在處理部分上面給出了 –