Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Выяснилось, что с уборкой мусора время работы значительно меньше, чем без неё! Хотя, казалось бы, на работу сборщика мусора должно тратиться время, что должно было ухудшить результат.
Dictionary<TreeNodeEnd, HashSet<TreeNodeEnd>> SelectedTerms =
new Dictionary<TreeNodeEnd, HashSet<TreeNodeEnd>>();
new HashSet<TreeNodeEnd>();
new LinkedList<TreeNodeEnd>();
…
GC.Collect();
Skleivanie(…);
…
private void Skleivanie(…)
{
…
foreach (…)
{
…
new TreeNodeEnd(…); //Здесь происходит ошибка выделения памяти
…
}
…
}
while (X1Tree.Count != 0)
{
Dictionary<UInt64, TreeNodeEnd> X2Tree = new Dictionary<UInt64, TreeNodeEnd>();
Skleivanie(X1Tree, X2Tree, OutTemp, iLevelCounter++);
X1Tree = X2Tree;
GC.Collect(); //Отсутствие сборки мусора очень сильно влияет на время работы!!!
}
static class Factory<T>
{
public static T GetNew<T>()
{
Counter<TreeNodeEnd>.Increase();
return new TreeNodeEnd(…);
}
}
Окей, раз GC.COllect() помогает — есть два варианта. Первый — он дефрагментирует память, и туда влезает больше TreeNodeEnd. Тут уже ничего поделаешь, ограничение памяти.
Реализация минимизации логических функций методом Квайна\Мак-Класки