std::vector из 10^7 случайных элементов типа int, в первом случае я линейно обхожу вектор, и заменяю нечетные значения на значение 0. Во втором случае я применил потоки, и разбил контейнер на 4 равные части, и каждую часть стал обрабатывать в разном потоке. Вопрос: почему в первом случае обработка происходит быстрее чем с применением многопоточности? Пробовал без блокировки мьютекса, и с блокировкой - с блокировкой, кажется, еще дольше.
1) надо без блокировки 2) должно быть быстрее в4 потока, примерно в4 раза. Значит, делаешь что-то не так.
Если все корректно сделал - наверное потому что расходы на создание/уничтожение потоков перекрывают выигрышь от многопоточности
std::thread::hard_concurrency что показывает?
Обсуждают сегодня