英特爾表示,超執行緒技術讓Pentium 4 HT處理器增加5%的裸晶面積,就可以換來15%~30%的效能提升。但實際上,在某些程式或未對多執行緒編譯的程式而言,超執行緒反而會降低效能。除此之外,超執行緒技術亦要作業系統的配合,普通支援多處理器技術的系統亦未必能充分發揮該技術。例如Windows 2000,英特爾並不鼓勵使用者在此系統中利用超執行緒。原先不支援多核心的Windows XP Home Edition卻支援超執行緒技術。
Windows API的GetLogicalProcessorInformation可获取当前计算机的物理核心数逻辑核心数:
DWORDGetProcessorCoreCount(DWORD&PhysicalProcessorCoreCount,DWORD&LogicalProcessorCoreCount){typedefBOOL(WINAPI*LPFN_GLPI)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,PDWORD);LPFN_GLPIglpi=(LPFN_GLPI)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"GetLogicalProcessorInformation");if(NULL==glpi)return0;PSYSTEM_LOGICAL_PROCESSOR_INFORMATIONbuffer=NULL;DWORDreturnLength=0;PhysicalProcessorCoreCount=0;LogicalProcessorCoreCount=0;while(true){DWORDrc=glpi(buffer,&returnLength);if(FALSE==rc){if(GetLastError()==ERROR_INSUFFICIENT_BUFFER){if(buffer)free(buffer);buffer=(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(returnLength);if(NULL==buffer)return0;}else{return0;}}else{break;}}PSYSTEM_LOGICAL_PROCESSOR_INFORMATIONptr=buffer;DWORDbyteOffset=0;while(byteOffset+sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION)<=returnLength){switch(ptr->Relationship){caseRelationProcessorCore:{++PhysicalProcessorCoreCount;// count the logical processor, which is equal the count of digital 1's of ptr->ProcessorMaskULONG_PTRProcessorMask=ptr->ProcessorMask;while(ProcessorMask!=0){ProcessorMask&=ProcessorMask-1;LogicalProcessorCoreCount++;}break;}default:break;}byteOffset+=sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);++ptr;}free(buffer);return-1;}