2013-03-31 3 views
0

Я генерирую миллионы уникальных строк. Для этого я использую HashSet <>. Мне нужно периодически сохранять результаты в текстовом файле.HashSet для уникальных строк до миллионов записей?

я заметил, что мой код занимает слишком много времени в следующих строках:

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

lastEndIndex требуется для того, чтобы сохранить результаты, полученные после последнего сохранения. Есть ли другой лучший механизм для этого?

ответ

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(); 
Смежные вопросы