📄 x86_cpu.cpp
字号:
#include "stdafx.h"
#include "..\Include\C_x86_CPU.h"
//===================================================================
void * fooStartCountCpuSpeed ()
{
BYTE * pRet = new BYTE[16] ;
if (pRet != NULL)
{
ULARGE_INTEGER ulgFirst ;
__asm
{
rdtsc
mov ulgFirst.LowPart, eax // 低32位
mov ulgFirst.HighPart, edx // 高32位
}
* (ULARGE_INTEGER *) pRet = ulgFirst ;
* (DWORD *) (pRet + sizeof(ULARGE_INTEGER)) = ::GetTickCount () ;
}
return (BYTE *)pRet ;
}
//===================================================================
DWORD fooEndCountCpuSpeed (void * pRet)
{
if (pRet == NULL)
return 0 ;
BYTE * pReturn = (BYTE *)pRet ;
ULARGE_INTEGER ulgFirst = * (ULARGE_INTEGER *) pReturn ;
ULARGE_INTEGER ulgSecond ;
DWORD dwSysTime = * (DWORD *) (pReturn + sizeof(ULARGE_INTEGER)) ;
_asm
{
rdtsc
mov ulgSecond.LowPart, eax // 低32位
mov ulgSecond.HighPart, edx // 高32位
}
ulgSecond.QuadPart -= ulgFirst.QuadPart ;
dwSysTime = ::GetTickCount () - dwSysTime ;
delete[] pRet ;
return (DWORD)(ulgSecond.LowPart / (dwSysTime * 1000)) ;
}
//===================================================================
DWORD fooGetCpuNumber ()
{
DWORD ProcessAffinityMask, SystemAffinityMask, count ;
GetProcessAffinityMask (GetCurrentProcess (), &ProcessAffinityMask, &SystemAffinityMask) ;
for (count = 0 ; SystemAffinityMask != 0 ; count++)
SystemAffinityMask &= (SystemAffinityMask - 1) ;
return count ;
}
//===================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -