Большинство процессоров в наши дни многоядерные. Проще говоря, это означает, что они имеют несколько процессоров на одном чипе.
Если у вас есть только один поток, вы можете использовать только одно из ядер - остальные ядра будут либо простаивать, либо использоваться для других выполняющихся задач. Если у вас несколько потоков, каждый из них может работать на своем ядре. Вы можете разделить вашу проблему на X частей, и, предполагая, что каждая часть может выполняться независимо, вы можете завершить вычисления почти в 1 / X-е время, которое обычно занимает.
По определению, самый быстрый параллельный алгоритм будет тратить как минимум столько же процессорного времени, как самый быстрый последовательный алгоритм, то есть распараллеливание не уменьшает требуемый объем работы, но работа распределяется по нескольким независимым единицам, что приводит к уменьшению реального времени, затрачиваемого на решение проблемы. Это означает, что пользователю не нужно долго ждать ответа, и он может двигаться быстрее.
10 лет назад, когда многоядерные системы были неслыханными, тогда это правда: вы ничего не выиграете, если мы проигнорируем задержки ввода-вывода, потому что для выполнения выполнялся только один модуль. Однако гонка за увеличение тактовой частоты остановилась; и вместо этого мы смотрим на многоядерный, чтобы увеличить объем доступной вычислительной мощности. Поскольку такие компании, как Intel, смотрят на 80-ядерные процессоры, становится все более и более важно, чтобы вы смотрели на распараллеливание, чтобы сократить время решения проблемы - если у вас только один поток, вы можете использовать только одно ядро, а другое - 79. ядра будут делать что-то еще, а не помогать вам закончить раньше.