⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x86_cpu.cpp

📁 一个国人自己实现图像库的程序(有参考价值)
💻 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 + -