[Из песочницы] Реализация минимизации логических функций методом Квайна\Мак-Класки

habralogo.jpg

Комментарии (2)

  • 12 мая 2017 в 16:16

    0

    Выяснилось, что с уборкой мусора время работы значительно меньше, чем без неё! Хотя, казалось бы, на работу сборщика мусора должно тратиться время, что должно было ухудшить результат.

    Попробуйте пул объектов добавить.

    Я вижу кучу созданий

    Dictionary> SelectedTerms =
          new Dictionary>();
    new HashSet();
    new LinkedList();
    

    Попробуйте их переиспользовать. Ну и вообще попрофилируйте конструкторы.

    Плюс, не понял проблемы со ссылками на структуры. Ключевое слово ref как раз для ссылок на значимые типы используется.

  • 12 мая 2017 в 18:21

    0

    По поводу пула объектов не получится, т. к. нехватка памяти происходит в одном месте одной процедуры, где массово создаются объекты типа TreeNodeEnd. «Вылечить» я это пытался путём полной сборки мусора перед вызовом этой процедуры примерно так:
    …
    GC.Collect();
    Skleivanie(…);
    …
      private void Skleivanie(…)
      {
    …
        foreach (…)
        {
          …
          new TreeNodeEnd(…); //Здесь происходит ошибка выделения памяти
          …
        }
    …
      }
    

    Но при количестве входных переменных больше 15 происходит столько выделений TreeNodeEnd, что памяти не хватает.

© Habrahabr.ru