Лучший выбор зависит от системы. Итак, вы хотите запустить обе версии в реальной системе, а затем проверить, как система реагирует. Можете ли вы по-прежнему использовать браузер, текстовый редактор и другие вещи в вашей системе? И лучше ли производительность при использовании n потоков, а не n-1? Что произойдет, если вы запустите приложение вместе с другим приложением, которое пытается использовать все процессоры?
И тогда вам нужно рассмотреть гиперпоточность. С четырьмя ядрами плюс гиперпоточность, вы можете использовать 8 ядер или 7 ядер. Снова, попробуйте отзывчивость системы и время, чтобы закончить.
И наконец, рассмотрите возможность разделения вашей работы на большее количество блоков, чем потоков. Причина в том, что разные потоки завершат работу в разное время, а затем вы захотите, чтобы часть работы была передана более быстрым потокам. В противном случае вам придется подождать, пока последний поток не закончится.
PS. «Гиперпоточность не может помочь с интенсивным кодом FPU, потому что есть только один FPU». Абсолютно неправильно. Невероятно сложно, даже с интенсивным кодом FPU, полностью использовать FPU из-за задержек. Гиперпоточность помогает, потому что для планирования доступно в два раза больше независимых операций.