C#: медленная работа программы при повторном вызове процедуры

Компьютеры программирование windows C# .net

При нажатии на "кнопку" программа выполняет несколько процедур. В одной из них (*) создаётся и заполняется 150 объектов List<string>, затем, этими данными заполняется объект DataTable. В конце, глобально объявленным объектам задаются начальные значения и происходит отчистка от мусора.

При последующих нажатиях на "кнопку", во время выполнения той самой процедуры (*) процессор сильно загружается и программа выполняется в 20-25 раз дольше по времени.

Добавлю, что после запуска программа занимает 10 МБ, после нажатия на "кнопку" - 30 МБ, а после отчистки от мусора - 17 МБ.
Пытался по-разному вернуть память в состояние как после запуска программы, (думаю, проблема в этом) - без результатно.

Подскажите, в чём может быть проблема и где капать?

P.S. при повторном вызове аналогичной процедуры, только где 30 объектов List<string>, такой проблемы не наблюдается.

Примечание:
Релиз вроде как тут не сделать (VS Express 2010)
Код выложить проблемно, т.к. очень большой, но в катце опишу:

void func()
{

// 1. Создаём 150 объектов (Уже здесь программа начинает тормозить
List<String> col_1 = new List<string>();
...
List<String> col_150 = new List<string>();

// 2. Создаём 150 столбцов в DataTable (Глоб. объявл.)
MyTable.Columns.Add("col_1");
...
MyTable.Columns.Add("col_150");

// 3. Заполняем 10 раз эти List<String>
for (j = 0; j < 10; j++)
{
// 3.1. Заполняем каждый List<String>
for (i = 0; i < 47; i++)
{
col_1.Add("qwe");
...
col_150.Add("qwe");
} // - по i

} // - по j

// заполняем таблицу
MyTable.Rows.Add(col_1, ..., col_150);

// дописываем эту таблицу к результирующей
resultTable.Merge(MyTable, true);

}

Как-то так)

Примечание:
Опечатался:
"} // - по j" - предпоследняя строка кода

Примечание:
atributz, к сожалению, в C# удалить эти объекты вручную как в С++, насколько мне известно, нельзя.

ВСЁ, РАЗОБРАЛСЯ!
Прошу прощения, что не внёс кое-какие подробности. Дело в том, что у меня открывались таблицы в DataGridView, о чём я забыл упомянуть. Отключение данной операции решило проблему, значит зря я грешил на List <string>.

Однако, всем спасибо за советы!
Ответы:
релиз пробывали компилить?
Проблема в том что вы написали код понадеявшись на универсальность объектов list. Но как видите в вашем случае этот вариант не самый удачный. Если хотите его оптимизировать, то попробуйте другие варианты. Например пропишите выделение памяти вручную, и сделайте не списки, а векторы.
Как-то так)  не пойдет, нужен весь код, прекрипите пожалуйста!


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.