Die Sache ist die: Deine CPU holt normalerweise im Voraus die paar nächsten Befehle aus dem Programm und legt sie in Registern ab. Wenn jetzt aber ein Sprung kommt, so sind diese Befehle nicht mehr gültig und es müssen erstmal neue geholt werden - die CPU kann solange das Programm nicht weiter ausführen. An dieser Stelle kommt HT ins Spiele - während des Nachholens ist die CPU ja frei - hier wird weiterer Code ausgeführt.
So, wenn du jetzt ein Programm hast, welches z.B. immer nur sequentiell eine Schleife abarbeitet mit wenigen Variationsmöglichkeiten, so wird dieses Programm weniger dieser sog. "Bubbles" produzieren und dementsprechend kommt die "virtuelle CPU" weniger zum Einsatz. Da aber der Synchronisationsoverhead der zwei Threads da ist, läuft das Programm insgesamt langsamer.
Das hat jetzt aber nix mehr mit dem Ursprungsthema zu tun