La scelta migliore dipende dal sistema. Quindi quello che vuoi fare è eseguire entrambe le versioni su un sistema reale, e quindi controllare come risponde il sistema. Puoi ancora utilizzare browser, editor di testo, altre cose sul tuo sistema? E le prestazioni sono migliori quando si usano n thread e non n-1? Cosa succede se si esegue l'app insieme a un'altra app che tenta di utilizzare tutte le CPU?
E quindi devi considerare l'hyperthreading. Con quattro core più hyperthreading, è possibile utilizzare 8 core o 7 core. Ancora una volta, prova la reattività del sistema e il tempo per finire.
Infine, considera la suddivisione del tuo lavoro in più blocchi rispetto ai thread. Il motivo è che thread diversi finiranno il lavoro in momenti diversi, e quindi vorresti un po 'di lavoro lasciato a disposizione per i thread più veloci. Altrimenti dovrai aspettare fino al termine dell'ultimo thread.
PS. "L'hyperthreading non può aiutare con il codice intensivo della FPU perché c'è solo una FPU". Assolutamente sbagliato È incredibilmente difficile, anche con il codice intensivo della FPU, sfruttare appieno la FPU a causa delle latenze. L'hyperthreading aiuta perché ci sono il doppio delle operazioni indipendenti disponibili per la pianificazione.