Я боюсь, что ответ остается, как и всегда, «это зависит от того, что вы делаете».
Да, отдача от добавления все большего количества ядер уменьшается, и всегда будет, если вы одновременно запускаете только одно приложение .
Даже в хорошо сделанном многопоточном приложении многие задачи, выполняемые с помощью многопоточности, выполняются так, чтобы ждать самых медленных компонентов в машине - жесткого диска, работы в сети - без ущерба для очевидной производительности для пользователя. Они не могут быть улучшены большей параллелизацией, поэтому любой теоретический предел ускорения недоступен для практических целей.
Стоит отметить, что есть несколько «больших» приложений, которые не являются многопоточными (просто проверьте эквивалент диспетчера задач вашей ОС, он должен быть в состоянии сказать вам, сколько принадлежит каждому процессу - например, мой Firefox в настоящее время использует 31 ).
Конечно, запуск нескольких не взаимозависимых приложений не так ограничен этими ограничениями. Добавляя больше ядер, вы можете запускать больше приложений одновременно с небольшим падением производительности обработки (однако, производительность жесткого диска, сети и т. Д. Не так хорошо масштабируется). На практике даже это также может привести к уменьшению отдачи, поскольку неизбежны накладные расходы на управление распределением работы между ядрами, коммуникационными конвейерами и т. Д.
Например, в этом посте Tom's Hardware (с 2009 года) делается попытка взглянуть на производительность нескольких многоядерных процессоров в одновременных приложениях - запустить игру вместе со сканированием AVG (оба из которых, вероятно, являются многопоточными). Четырех-, трех- и двухъядерные процессоры работают одинаково только с игрой, но добавляют одновременное сканирование AVG, и производительность (измеренная по среднему FPS) падает на 22%, 40% и 59% соответственно.
Таким образом, хотя четырехъядерное ядро не обеспечивало повышения производительности по сравнению с двухъядерным при запуске одного интенсивного приложения, как только появилось другое интенсивное задание, в итоге производительность оказалась вдвое выше. К сожалению, я не могу найти ничего другого, чтобы исследовать, насколько хорошо это масштабируется с большим количеством ядер и более интенсивными задачами.
И затем вы должны обратить внимание на современные функции процессоров, такие как Intel Turbo Boost / AMD Turbo Core. Эти особенности позволяют многоядерному процессору парковать ядра (переводить их в более медленный режим с низким энергопотреблением) и использовать запасную энергию для разгона ядер, которые остаются активными, - что позволяет процессору оптимизировать себя для обеспечения максимальной вычислительной мощности. насколько это возможно для количества задач, с которыми он представлен.