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