#include #include#include //clock, gettimeofday, time
#include //Sleep, GetTickCount, timeGetTime, QueryPerformanceCounter
#include
//#pragma comment(lib, "winmm.lib")//timeGetTime, 但是这个库Windows或Qt或VS2015都没有自带
const unsigned long SLEEP_TIME_MILL = 1000;/**
* QTime的精度为ms级*/
voidcalcByQtimeElapsed() {
QTime time;
time.start();
QThread::msleep(SLEEP_TIME_MILL);int timeElapsed =time.elapsed();
qDebug()<
}/**
* QTime的精度为ms级*/
voidcalcByQtimeCurrentTime() {
QTime startTime=QTime::currentTime();
QThread::msleep(SLEEP_TIME_MILL);
QTime stopTime=QTime::currentTime();int elapsed =startTime.msecsTo(stopTime);
qDebug()<
}/**
* clock的精度为ms级*/
voidcalcByClock() {
clock_t startTime=clock();
Sleep(SLEEP_TIME_MILL);
clock_t endTime=clock();
clock_t elapsed= endTime -startTime;
qDebug()<
}/**
* GetTickCount的精度为ms级*/
voidcalcByTickCount() {//返回自开机以来经历的毫秒数
DWORD startTime =GetTickCount();
Sleep(SLEEP_TIME_MILL);
DWORD stopTime=GetTickCount();
DWORD elapsed= stopTime -startTime;
qDebug()<
}///**
//* timeGetTime的精度为ms级//* 必须添加Winmm.lib, 否则编译报错undefined reference//*///void calcByTimeGetTime() {// //返回自开机以来经历的毫秒数//DWORD startTime = timeGetTime();//Sleep(SLEEP_TIME_MILL);//DWORD stopTime = timeGetTime();//DWORD elapsed = stopTime - startTime;//qDebug()<
/**
* gettimeofday的精度为us级*/
voidcalcByGetTimeOfDay() {structtimeval startTime, stopTime;
gettimeofday(&startTime, NULL);
Sleep(SLEEP_TIME_MILL);
gettimeofday(&stopTime, NULL);long elapsed = (stopTime.tv_sec-startTime.tv_sec) * 1000000 + (stopTime.tv_usec -startTime.tv_usec);
qDebug()<
}/**
* QueryPerformanceCounter的精度为us级*/
voidcalcByQueryPerformanceCounter() {
LARGE_INTEGER frequency, startCount, stopCount;
WINBOOL ret;//返回性能计数器每秒滴答的个数
ret = QueryPerformanceFrequency(&frequency);if(ret) {
ret= QueryPerformanceCounter(&startCount);
}
Sleep(SLEEP_TIME_MILL);if(ret) {
QueryPerformanceCounter(&stopCount);
}if(ret) {
LONGLONG elapsed= (stopCount.QuadPart - startCount.QuadPart) * 1000000 /frequency.QuadPart;
qDebug()<
}
}/**
* time(NULL)精确度为s级*/
voidcalcByTime() {
time_t startTime=time(NULL);
Sleep(SLEEP_TIME_MILL);
time_t stopTime=time(NULL);long elapsed = stopTime -startTime;
qDebug()<
}int main(int argc, char *argv[])
{
calcByQtimeElapsed();
calcByQtimeCurrentTime();
calcByClock();
calcByTickCount();//calcByTimeGetTime();
calcByGetTimeOfDay();
calcByQueryPerformanceCounter();
calcByTime();
system("pause");return 0;
}