Я не знаком ни с оптимизацией компилятора для HT, ни с различием между i7 HT и P4, как указал Дэвид.Тем не менее, вы можете ожидать общего поведения.
Переключение контекста очень дорого.Поэтому, если у вас есть одно ядро и одновременно запущены два потока, переключение одного потока с другого на другое всегда приводит к снижению производительности.Однако потоки не используют ядро все время.Например, если поток читает или записывает память, он просто ожидает доступа к памяти без использования ядра, обычно более 100 циклов.Существует много других случаев, когда поток должен останавливаться таким образом, например, операции ввода-вывода, зависимости данных и т. Д. Здесь HT помогает, потому что он может отправить ожидающий (или заблокированный) поток и вместо этого выполнить другой поток.
Таким образом, вы можете подумать, что если все потоки действительно вряд ли будут заблокированы, переключение контекста вызовет только издержки.Подумайте об очень ограниченном в вычислениях приложении, работающем с небольшим набором данных.