StringListに逐次データが追加される場合、追加の度にsortメソッドを実行するより
最初から Sorted := true; にする方が断然速いようです。
※私のPCの環境では…
// 追加後Sort 1,267ms 1,000回 (※10,000回だとなかなか帰ってこない)
for i := 1 to 1000 do begin
sl.Append(FormatCurr('000000',Random(1000000)));
sl.Sort;
end;
// 初めからTrue 77ms 10,000回
sl.Sorted := true;
for i := 1 to 10000 do begin
sl.Append(FormatCurr('000000',Random(1000000)));
end;
// ちなみに 追加のみ 5ms 10,000回
sl.Sorted := false;
for i := 1 to 10000 do begin
sl.Append(FormatCurr('000000',Random(1000000)));
end;
データを最後に追加してから並べ替えるより、データを突っ込むところを探して
追加する方が速いのでしょうね。たぶん。
|