Well...this (and other) threads (no pun intended) led me to do some tests, and I've learned something really interesting - and surprising!
It may be relevant for anyone considering the 6-core i5 versus the 6-core/HT i7 (like me).
I have an Rstudio script that runs a batch of CPU intensive jobs (8 jobs) in parallel. Because it is R, I can specify how many cores to spread the jobs across (i.e. how many instances of R). Up until today I have always been specifying the maximum CPU cores that my system presents (e.g. 8 for a 2011 i7 quad-core mac mini). I had always assumed that using the hyper-threading cores was a good thing to do...
Here is the crazy (to me) result.
Specifying 4 cores for 8 jobs: time for task = 1m 28 seconds
Specifying 6 cores for 8 jobs (i.e. two virtual cores) = 1m 38 seconds (!)
Specifying 8 cores for 8 jobs (i.e. 4 real+4 virtual cores) = 1m 28 seconds.
Specifying 2 cores for 2 jobs = 2 min 20 seconds.
Here is the activity monitor log: The big chunks of activity are those three tests. Ignore the small spieks in between. As you can see, the correct number of cores are being used in each case.
View attachment 803646
So, what I have learned is that hyperthreading (for these tasks) is completely useless - and potentially detrimental! For the 6 core specification, it looks like 6 jobs were done slightly faster than 8 jobs, but then the remaining 2 jobs had to be started afterwards, giving the worst overall time.
What amazes me is that the 4 core test gave identical times to when 8-cores (4 real/4 HT) were tested.
I've literally just today ordered the 6-core i7 mac mini, and I really wonder if it a bit of a waste!
The only benefit I can potentially see is from the higher turbo boost speed (4.6 for i7 versus 4.1 max for i5). Hyper-threading doesn't seem like it is going to help at all.
Comments?