Лучше ли параллельная и последовательная обработка в значительной степени зависит от задачи, и вы уже сделали правильную вещь: вы сравнили оба и определили для своей задачи (ту, которую вы отметили, не обязательно ту, которую вы действительно хотите сделать) какой из них быстрее.
Как правило, на одном процессоре последовательная обработка имеет тенденцию быть лучше для задач, которые связаны с процессором, потому что если у вас есть две задачи, каждая из которых требует пять секунд процессорного времени, то вам потребуется десять секунд процессорного времени независимо от того, выполняете ли вы их последовательно или параллельно. Следовательно, настройка нескольких потоков / процессов не принесет никакой пользы, но создаст дополнительные издержки на переключение задач, а также лишит вас возможности любых результатов до тех пор, пока все результаты не станут доступны.
Задачи с привязкой к ЦП в многопроцессорной системе, как правило, работают лучше при параллельной работе, при условии, что они могут выполняться независимо друг от друга. Если нет, или если вы используете язык / модель потоков / модель IPC / и т.д. который заставляет все задачи выполняться на одном процессоре, а затем см. «на одном процессоре» выше.
Параллельная обработка обычно лучше для задач, связанных с вводом / выводом, независимо от количества доступных процессоров, потому что процессоры быстры, а ввод / вывод медленны, поэтому параллельная работа позволяет одной задаче обрабатывать свои данные, в то время как другой ожидает завершения операций ввода-вывода. (Вот почему make -j2
имеет тенденцию быть значительно быстрее, чем обычный make
, даже на однопроцессорных компьютерах.)
Но, опять же, это все обобщения, и у всех есть случаи, когда они будут неверными. Только бенчмаркинг откроет правду с уверенностью.