○CPUクロック数の累積カウンタの値を表示

電源ONからクロックがカウントされているカウンタの値を表示します


int _tmain(int argc, _TCHAR* argv[])
{

	unsigned long h,l;

	_asm {
		cpuid
		rdtsc
		mov l, eax
		mov h, edx
	}

	printf("%lu%lu\n",h,l);
	getchar();

	return 0;
}




○CPUのクロックを求める

多少の誤差が出ますがクロック周波数を表示します


#include <stdio.h>
#include <windows.h>
	
#pragma comment(lib, "winmm.lib")

int main(int argc, char* argv[])
{
	unsigned long tS=timeGetTime()+2;
	while(tS>timeGetTime()){}//カウンタの切りのいい時間まで待ちます

	unsigned long s,e;

	_asm {
		cpuid
		rdtsc
		mov s, eax
	}

	unsigned long t=timeGetTime()+1000;
	while(t>timeGetTime()){}//1秒カウンタ

	_asm {
		cpuid
		rdtsc
		mov e, eax
	}

	printf("%luMHz",(e-s)/(1000*1000));

	return 0;
}



▲トップページ > Windows と C++