Различие в производительности для мультипотока и мультипроцесса

Несколько лет назад, в среде Windows, я сделал некоторое тестирование путем разрешения нескольким экземплярам вычисления ЦП, интенсивного + доступ к памяти, интенсивный + доступ ввода-вывода интенсивное выполнение приложения. Я разработал 2 версии: Каждый работает при многопроцессорной обработке, другой работает при многопоточности.

Я нашел, что производительность намного лучше для многопроцессорной обработки. Я читал где-то в другом месте (но я не могу помнить сайт).

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

Однако я не могу больше находить ту статью. Я задавался вопросом, до сегодня, сохраняются ли ниже все еще?

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

9
задан participant 10 October 2014 в 23:10
поделиться

2 ответа

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

Кроме того, процессы (особенно в Windows) "тяжелее" запускаются, поэтому, если происходит много "запусков задач", опять же, потоки могут легко обойти процессы по производительности.

Далее, у вас могут быть процессоры с "гиперпоточностью", которые могут очень быстро запускать (по крайней мере) два потока на ядре - но не процессы (поскольку "гиперпоточные" потоки не могут использовать разные адресные пространства) - еще один случай, когда потоки могут выиграть в производительности.

Если ни одно из этих соображений не применимо, то гонка в любом случае должна быть не лучше ничьей.

5
ответ дан 3 November 2019 в 07:46
поделиться

Я не совсем понимаю, что вообще означает эта цитата. Это очень похоже на чушь.

Основное, что разделяют внутрипроцессные потоки, - это адресное пространство виртуальной памяти.

1
ответ дан 3 November 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: