Информация об изменениях

Сообщение Re[8]: Потоки, net, потеря производительности от 12.02.2015 6:29

Изменено 12.02.2015 6:31 inevity

Здравствуйте, Вячеслав Бенедичук, Вы писали:

ВБ>Посмотри профайлером, как у тебя распределяетася память.

ВБ>Выглядит так, что у тебя забивается хип, после чего стартует GC, который блокирует исполнение всех твоих потоков на время чистки памяти. Это очень сильно снижает производительность.

ВБ>str+=s+','

ВБ>myform.Text:=FormCaption+', done = '+ (((1000*i) div k)/10).ToString('#0.0')+ '%, Delta='+(abs(Table.EQ1-Table.EQ2)*100).ToString('#0.000')+', CNT='+Table.sameEQcount.ToString;
ВБ>s1+=PatTextBoxes[i,j].Text;

ВБ>- такие конструкции кушают память очень быстро и нерационально, так как строка иммутабельна, то каждый плюс дает новый экземпляр.

ВБ>пользуйся string builder.

Благодарю! (и всех других ответивших тоже)
Мысль о хипе, была высказана чуть ранее и в Вашем сообщении тоже.
Похоже, что проблема, действительно в этом. Выглядит очень логично. — Основная работа у меня идет скорее с памятью.
Единственное, на счет строк — подобная работа со строками идет уже вне потоков и совсем не критична, но я обращу на это внимание!
Здравствуйте, Вячеслав Бенедичук, Вы писали:

ВБ>Посмотри профайлером, как у тебя распределяетася память.

ВБ>Выглядит так, что у тебя забивается хип, после чего стартует GC, который блокирует исполнение всех твоих потоков на время чистки памяти. Это очень сильно снижает производительность.

ВБ>str+=s+','

ВБ>myform.Text:=FormCaption+', done = '+ (((1000*i) div k)/10).ToString('#0.0')+ '%, Delta='+(abs(Table.EQ1-Table.EQ2)*100).ToString('#0.000')+', CNT='+Table.sameEQcount.ToString;
ВБ>s1+=PatTextBoxes[i,j].Text;

ВБ>- такие конструкции кушают память очень быстро и нерационально, так как строка иммутабельна, то каждый плюс дает новый экземпляр.

ВБ>пользуйся string builder.

Благодарю! (и всех других ответивших тоже)
Мысль о хипе, была высказана чуть ранее и в Вашем сообщении тоже.
Похоже, что проблема действительно в этом. Выглядит очень логично. — Основная работа у меня идет скорее с памятью.
Единственное, на счет строк — подобная работа со строками идет уже вне потоков и совсем не критична, но я обращу на это внимание!