0

何百万もの一意の文字列を生成しています。この目的で HashSet<> を使用しています。結果を定期的にテキストファイルに保存する必要があります。

次の行でコードに時間がかかりすぎることに気付きました。

for (int i = lastEndIndex; i < storage.Count; i++)
        {
            sb.AppendLine(storage.ElementAt(i));
        }

最後の保存後に生成された結果を保存するには、lastEndIndex が必要です。これには他に良いメカニズムはありますか?

4

1 に答える 1

2

ElementAt()呼び出されるたびに、コレクションの先頭から反復する必要があります。だからこそ効率が悪い。

別のアプローチをお勧めします-最後の保存後に生成された結果をリストに保存し、それらの結果をHastSetそれ自体ではなく、そこからファイルに保存します。

latestリスト:

var latest = new List<string>();

要素の追加:

if(storage.Add(newElement))
{
    latest.Add(newElement);
}

最新をファイルに保存:

foreach(var item in latest)
{
    sb.AppendLine(item);
}
latest.Clear();
于 2013-03-31T09:52:01.287 に答える