Mình xin giới thiệu 1 class
class này do Feng Yuan, trong cuốn sách GDI. Mong rằng nó hữu ích cho các bạn
(Feng Yuan
Publisher: Prentice Hall PTR
First Edition December 01, 2000
ISBN: 0-13-086985-6, 1234 pages)
Code:
inline unsigned __int64 GetCycleCount(void)
{
	_asm    _emit 0x0F
	_asm    _emit 0x31
}
class KTimer
{
	unsigned __int64  m_startcycle;
	
public:
	
	unsigned __int64  m_overhead;
	
	KTimer(void)
	{
		m_overhead = 0;
		Start();
		m_overhead = Stop();
	}
	
	void Start(void)
	{
		m_startcycle = GetCycleCount();
	}
	
	unsigned __int64 Stop(void)
	{
		return GetCycleCount()-m_startcycle-m_overhead;
	}
};
Làm sao xài dc. Ví dụ, tính tốc độ CPU.
Tốc độ cpu là MHZ, nghĩa là triệu vòng trên 1 giây.
Ktimer ktimer;
ktimer.Start();
Sleep(1000);
unsigned time = ktimer.Stop();//Trả về số vòng CPU đã thực hiện trong 1s
unsigned CpuSpeed = (unsinged) time/1000000; //Đơn vị là MHZ.

Ví dụ 2:
Làm sao để kiểm tra thuật toán mình có nhanh hơn người khác không.
Bạn cũng làm tương tự.
KTimer ktimer;
ktimer.Start();
//Code viết ở đây
unsigned time = (unsigned)ktimer.Stop();//Số vòng CPU để tính cho bài toán
//Đổi ra thời gian, Bạn có thể lấy số vòng, chia tốc độ CPU là dc thời gian.