我正在编写一个接受用户输入的 UI 应用程序 -
最多 50,000 个条目,他粘贴到 aTextbox
中,我需要将其转换为List<Uint32>
(不同)
在此过程中,我在“文本框”中显示 Disistict 列表(输出)。
我正在拆分文本并将其转换为 Uint32 的不同列表然后我将列表转换为数组。
private List<UInt32> ConvertTextToList(string TextBoxText)
{
string[] TextBoxSplitted = TextBoxText.Split(new string[] { Environment.NewLine},StringSplitOptions.RemoveEmptyEntries); //Fast
var TextBoxSplittedAsList = TextBoxSplitted.ToList<string>(); //Fast
List<UInt32> lp = TextBoxSplittedAsList.ConvertAll(new Converter<string, UInt32>(element => Convert.ToUInt32(element))); //Fast
List<UInt32> uintList = lp.Distinct<UInt32>().ToList<UInt32>(); //Fast
UInt32[] uintListArray = uintList.ToArray(); //Fast
//Slow part (measured 15 sec on core2duo 2.53GHz)
StringBuilder builder = new StringBuilder();
Array.ForEach(uintListArray, x => builder.Append(x));
//Done slow part
SomeTextBox.text = builder.ToString();
return uintList;
}
首先我尝试了 -ListOfHeliostatsText.Text = string.Join(",", uintListArray);
哪个更慢(比 using 慢约 25% StringBuilder
)
我感觉我的函数设计错了,两次多次转换。
有没有办法提高这个功能的性能?
编辑: 我的错,慢的部分是 ListOfHeliostatsText.Text = builder.ToString();
我将继续阅读答案。