Распределять разные кучи для каждой потока?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Распределять разные кучи для каждой потока?

Сообщение Anonymous »

Я делаю интенсивное приложение для расчета в C ++ и получаю проблемы с производительностью.
Моей задачи легко разделить в потоках, а затем объединять результаты, поскольку каждая задача производит данные, и это необходимо сортировать, и результат необходимо сортировать. Недостаток: сортировка и слияние занимает довольно много времени (я думаю, с тех пор, как я должен прочитать файлы). Но хорошо, что расчет (заполнение файлов) очень эффективен < /li>
Хранить каждый шаг вывод в STD :: Set. Приятно, так как сортировка сделана, слияние в конце концов очень быстро. Недостаток std :: set выделяет память на кучу, и, поскольку я запускаю много потоков, кажется, что столкновения и, следовательно, ожидают при этом. Производительность плохая. < /Li>
Храните вывод из потоков в std :: vector. Тем не менее, есть столкновения при заполнении вектора, и для сортировки и объединения результатов требуется некоторое время. Я оставляю память, чтобы вектор, чтобы уменьшить столкновение, но это не делает его намного быстрее. Это немного проблематично, так как некоторые потоки будут производить много данных, некоторые из них не дадут ни одного. Или есть четвертый лучший подход?

Подробнее здесь: https://stackoverflow.com/questions/795 ... ach-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»