ユーザーからの入力を受け入れる UI アプリケーションを作成しています -
彼がに貼り付けた最大50,000のエントリTextbox
、私が変換する必要があるList<Uint32>
(個別)
その過程で、「テキストボックス」に地区リスト (出力) を表示します。
テキストを分割し、それを Uint32 の Distinct リストに変換しています。次に、リストを配列に変換します。
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);
どちらが遅かったか ( を使用するよりも約 25% 遅かったStringBuilder
)
私の関数は間違って設計されていると感じています.2つの多くの変換です。
この関数のパフォーマンスを改善する方法はありますか?
編集: 私の悪い、遅い部分は ListOfHeliostatsText.Text = builder.ToString(); です。
私は答えを読み続けます。