Это нормально, чтобы создать много недолговечный словарь или лучше к объекту-пулу? - PullRequest
1 голос
/ 26 февраля 2020

У меня есть метод, который читает некоторые значения из БД, а затем выдает словарь - может быть много тысяч раз.

public IEnumerable<Dictionary<string, MyClass>> GetValues()
{
   var results = new Dictionary<string, MyClass>();
   // ... fill data from data reader

   yield return results;
}

Потребитель этого метода перебирает только результат и использует словарь в манера чтения Итак ... что касается сбора мусора и непрерывности памяти: есть ли смысл делать что-то подобное?

private Dictionary<string, MyClass> _resultHolder = new Dictionary<string, MyClass>();

public IEnumerable<ReadOnlyDictionary<string, MyClass>> GetValues()
{
   // Don't want the previous record values, so clear
   _resultHolder.Clear();
   // ... fill data from data reader

   yield return _resultHolder;
}

Насколько я помню, существуют разные уровни для сборщика мусора ... Так что будет этот результат в конечном итоге только в конечном итоге на уровне 0 и, следовательно, не вызывает никаких проблем в отношении фрагментации памяти? Будет ли такой вид объединения объектов преждевременной оптимизацией?

...