GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。
如: DWORD time;
time = GetTickCount();
但是
////////////variables definition//////////// DWORD time1,time2,time3;//计算时间用 LARGE_INTEGER frequency;//高性能计数器的频率 LARGE_INTEGER start,end; start.QuadPart=0; end.QuadPart=0; frequency.QuadPart=0; long ticks=0; QueryPerformanceFrequency(&frequency);
///////////////////processing /////////// #ifdef DEBUGTIME time1 = GetTickCount(); QueryPerformanceCounter(&start); #endif
#ifdef DEBUGTIME time2 = GetTickCount(); QueryPerformanceCounter(&end); ticks = (long)(end.QuadPart-start.QuadPart); double millsecond=(double)ticks*1000.0/(double)frequency.QuadPart; printf("noninterpolating wasted time is %ld number %ld ticks %lf\n",time2-time1,arrayindex,millsecond); #endif
#pragma once #include<Windows.h> ///本类采用高分辨率高性能计数器实现 ///在我的Intel T7500机器上,分辨率大约是279毫微秒 class StopWatch { public: StopWatch(void); ~StopWatch(void); private: LARGE_INTEGER beginticks; LARGE_INTEGER endticks ; LARGE_INTEGER frequency;//高性能计数器的频率:每秒357,9545个tick 我的INTEL T7500 public: void Start(); void Stop(); double GetCostMillisecond(); unsigned long long GetFrequency(); }; #include "StdAfx.h" #include "StopWatch.h" #include <Windows.h> #include<iostream> using namespace std; StopWatch::StopWatch(void) { beginticks.QuadPart=0; endticks.QuadPart=0; frequency.QuadPart=0; QueryPerformanceFrequency(&frequency); } StopWatch::~StopWatch(void) { } void StopWatch::Start() { //beginticks=GetTickCount(); QueryPerformanceCounter(&beginticks); } void StopWatch::Stop() { QueryPerformanceCounter(&endticks); } double StopWatch::GetCostMillisecond() { unsigned long long cost=(unsigned long long)(endticks.QuadPart-beginticks.QuadPart); double millsecond=(double)cost*1000.0/(double)frequency.QuadPart; return millsecond; } unsigned long long StopWatch::GetFrequency() { return (unsigned long long)frequency.QuadPart; }