Predicting performance (if any) from a hyperthread is difficult to predict.
Hyperthreading means that if one thread is delayed (almost) for any reason, the CPU will have a pool of instructions from another thread to (attempt) to execute. If, for example, the code is highly dependent on delays in the main memory (for example, unpredictable reading patterns without prefetching), hyperthreading can significantly improve performance.
In the other direction, if the code is carefully written to cover latency by careful use of the cache, prefetching, etc., it may receive little or nothing from the hyper-thread. Especially with older operating systems that do not try to take into account hyperthreads in their threading planning, additional threads can actually lead to additional context switches, which slows down overall execution.
Assuming you start with fully single-threaded code and add some OpenMP directives, my own experience is that Hyperthreading is usually good for increasing performance by an order or 10%. If the code makes almost any attempt to the prefecture or something similar, most (if not all) of this advantage evaporates almost immediately.
source share