Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
#1

Потоки и их влияние на скорость - C++

08.06.2013, 21:59. Просмотров 500. Ответов 7
Метки нет (Все метки)

Есть необходимость использовать несколько потоков, которые будут в цикле обрабатывать значения. Как будет быстрее, разбить задачу на несколько частей и каждую поместить в поток (получится примерно 10 потоков) или запихнуть в каждый побольше и получить меньше (5 потоков)?
Вопрос не в прямой скорости, а в том, как будет лучше для процессора обрабатывать? Как лучше для общей производительности системы? Как будет меньше нагрузки на процессор?
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 21:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потоки и их влияние на скорость (C++):

Что такое потоки ввода, потоки вывода? - C++
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим...

Влияние оптимизации? Или UB? - C++
Добрый день, подскажите, вроде действия одинаковы, но программа выводит разный результат. Разбираюсь с указателями, пример условный,...

Влияние выходного параметра функции - C++
Собственно вопрос. В C++ при тип выходного параметра не учитывается при перегрузке функции , на курсах говорили из за того, что в момент...

Влияние разрядности процессора на количество операций - C++
Здравствуйте. Объясните по подробней ответ на вопрос: сколько операций совершает процессор при сложении двух чисел, возведении их в степень...

Влияние маршрутизатора на скорость сигнала - Сетевое оборудование
В сети был заменен маршрутизатор выполняющий роль шлюза. Поставил Dir 620. Сразу после этого существенно упала скорость интернета в сети. В...

Влияние кода js на скорость работы сайта - jQuery
Подскажите пожалуйста, допустим есть два сайта: на одном слайдер сделан только с помощью html/css, а на другом такой-же слайдер, но с...

7
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.06.2013, 22:11 #2
Это зависит от алгоритма, который ты хочешь распараллелить..
0
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
08.06.2013, 22:29  [ТС] #3
lazybiz, да ясен пень, но что лучше, иметь один поток с условиями типа
C++
1
2
3
4
5
6
7
8
while (1)
{
if (f)
z+=2;
if (r) 
z+=4;
Sleep(5);
}
или разделить на 2 потока по 1 условию?
При том, что в каждом будет Sleep(5);
Или это только нагрузит процессор еще одним потоком, который должен быстро обрабатыватья (слип же на 5 мс, а не на 500)?
0
Убежденный
Системный программист
Эксперт С++
15633 / 7143 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
08.06.2013, 22:32 #4
Идеальная операция для распараллеливания - такая, где потоки нигде не
пересекаются друг с другом, не конкурируют за общие ресурсы, не
ждут друг друга и не обращаются к памяти, лежащей в чужих кэшах.

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

При таком раскладе общая загрузка вычислительных мощностей легко может
достигать планки в 100% и постоянно держаться на этой отметке на все время
вычисления. И тогда выигрыш от многопоточности становится прямо
пропорционален количеству задействованных процессоров.
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.06.2013, 22:33 #5
Именно такой пример распараллеливать смысла нет. При таких простых вычислениях производительность может даже упасть.. К тому же требования к ресурсам увеличатся.
0
Убежденный
Системный программист
Эксперт С++
15633 / 7143 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
08.06.2013, 22:35 #6
Цитата Сообщение от MrCath Посмотреть сообщение
слип же на 5 мс, а не на 500
Во-первых, Sleep работает с миллисекундами, а не с микросекундами.
Во-вторых, даже паузу в 5 миллисекунд Windows гарантировать не может.
Если нужны такие крохотулечные задержки, уж лучше использовать
процессорную инструкцию PAUSE (_mm_pause в Visual C++).
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.06.2013, 22:36 #7
Цитата Сообщение от MrCath Посмотреть сообщение
При том, что в каждом будет Sleep(5);
Распараллеливать с целью оптимизации и пихать туда Sleep() ? Или твоя цель не оптимизация?
0
Dr_Quake
Заблокирован
08.06.2013, 23:04 #8
Цитата Сообщение от Убежденный Посмотреть сообщение
Во-первых, Sleep работает с миллисекундами, а не с микросекундами.
Во-вторых, даже паузу в 5 миллисекунд Windows гарантировать не может.
Если нужны такие крохотулечные задержки, уж лучше использовать
процессорную инструкцию PAUSE (_mm_pause в Visual C++).
Sleep работает с миллисекундами только в винде, в никсах(а точнее POSIX) тот же Sleep работает с секундами, там свой nanosleep для малых интервалов или что-то такое.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 23:04
Привет! Вот еще темы с ответами:

Влияние типа конструкции кабеля, FTP/UTP (защита от внешних и внутренних ЭМП), на скорость - Сети
Здравствуйте, уважаемые! Имеется задача в закрытом помещении соединить роутер и 5 клиентов через ethernet кабели (5 кабелей в...

Потоки, увеличить скорость работы программы - C#
как увеличить скорость работы программы входные параметры 8,00000 0,01 5 0 0 0 4 4 0 4 4 5 5

Не используя имена элементов, найти скорость течения реки и скорость катера - Lazarus
Не используя имена элементов, найти скорость течения реки и скорость катера, если известны общий путь и время движения по течению и против...

Скорость распространения волны и максимальная скорость колебаний частиц воздуха - Колебания и волны
Добрый вечер уважаемые участники форума. Применять уравнение звуковой волны для решения этой задачи?Или формулу можно выудить другими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
08.06.2013, 23:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru