La mejor opción depende del sistema. Entonces, lo que quiere hacer es ejecutar ambas versiones en un sistema real, y luego verificar cómo responde el sistema. ¿Todavía puede utilizar el navegador, editor de texto, otras cosas en su sistema? ¿Y es mejor el rendimiento cuando se utilizan n subprocesos y no n-1? ¿Qué sucede si ejecuta la aplicación junto con otra aplicación que intenta utilizar todas las CPU?
Y luego necesitas considerar el subproceso. Con cuatro núcleos más hyperthreading, podría usar 8 núcleos, o 7 núcleos. Nuevamente, pruebe la capacidad de respuesta del sistema y el tiempo para terminar.
Y, finalmente, considera dividir tu trabajo en más bloques que hilos. El motivo es que los distintos subprocesos finalizarán el trabajo en distintos momentos y, por lo tanto, querrá un poco de trabajo para los subprocesos más rápidos. De lo contrario, tendrás que esperar hasta que finalice el último hilo.
PS. "Hyperthreading no puede ayudar con el código intensivo de FPU porque solo hay una FPU". Absolutamente equivocado Es increíblemente difícil, incluso con el código intensivo de FPU, hacer un uso completo de la FPU debido a las latencias. Hyperthreading ayuda porque hay el doble de operaciones independientes disponibles para la programación.