IO latency 에 달린 문제입니다.


가령 어떤 코드의 비용이


연산 3 입출력 3 클럭 이라면, 대략 물리 코어수의 2배의 쓰레드가 적합하죠.

연산 3 입출력 9 클럭 이라면, 대략 물리 코어수의 4배 정도의 쓰레드가 적합합니다.


이때 소프트웨어로 쓰레드간 스위칭하는 것 보다

하이퍼 쓰레딩이 더 효율적이거든요.


그러니깐, 하이퍼쓰레딩이 일방적으로 병렬화에 나쁜건 아니고,

IO latency 가 낮고 내부연산량만 많을때에 나쁜것이죠.