您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++怎么計(jì)算時(shí)間差”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++怎么計(jì)算時(shí)間差”吧!
Qt計(jì)算時(shí)間的兩種方法:
QTime elapsed() : ms
QTime currentTime() : ms
C++計(jì)算時(shí)間的五種方法:
clock() : ms
GetTickCount() : ms
gettimeofday(time_val*, NULL) : us
QueryPerformanceFrequency(LARGE_INTEGER*) & QueryPerformanceCounter(LARGE_INTEGER*) : us
time(NULL) : s
#include <QThread> #include <QTime> #include <sys/time.h> //clock, gettimeofday, time #include <windows.h> //Sleep, GetTickCount, timeGetTime, QueryPerformanceCounter #include <QDebug> //#pragma comment(lib, "winmm.lib") //timeGetTime, 但是這個(gè)庫Windows或Qt或VS2015都沒有自帶 const unsigned long SLEEP_TIME_MILL = 1000; /** * QTime的精度為ms級(jí) */ void calcByQtimeElapsed() { QTime time; time.start(); QThread::msleep(SLEEP_TIME_MILL); int timeElapsed = time.elapsed(); qDebug()<<"QTime.start & QTime.elspsed ="<<timeElapsed<<"ms"; } /** * QTime的精度為ms級(jí) */ void calcByQtimeCurrentTime() { QTime startTime = QTime::currentTime(); QThread::msleep(SLEEP_TIME_MILL); QTime stopTime = QTime::currentTime(); int elapsed = startTime.msecsTo(stopTime); qDebug()<<"QTime.currentTime ="<<elapsed<<"ms"; } /** * clock的精度為ms級(jí) */ void calcByClock() { clock_t startTime = clock(); Sleep(SLEEP_TIME_MILL); clock_t endTime = clock(); clock_t elapsed = endTime - startTime; qDebug()<<"clock ="<<elapsed<<"ms"; } /** * GetTickCount的精度為ms級(jí) */ void calcByTickCount() { //返回自開機(jī)以來經(jīng)歷的毫秒數(shù) DWORD startTime = GetTickCount(); Sleep(SLEEP_TIME_MILL); DWORD stopTime = GetTickCount(); DWORD elapsed = stopTime - startTime; qDebug()<<"GetTickCount = "<<elapsed<<"ms"; } ///** // * timeGetTime的精度為ms級(jí) // * 必須添加Winmm.lib, 否則編譯報(bào)錯(cuò)undefined reference // */ //void calcByTimeGetTime() { // //返回自開機(jī)以來經(jīng)歷的毫秒數(shù) // DWORD startTime = timeGetTime(); // Sleep(SLEEP_TIME_MILL); // DWORD stopTime = timeGetTime(); // DWORD elapsed = stopTime - startTime; // qDebug()<<"timeGetTime = "<<elapsed<<"ms"; //} /** * gettimeofday的精度為us級(jí) */ void calcByGetTimeOfDay() { struct timeval 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()<<"gettimeofday ="<<elapsed<<"us"; } /** * QueryPerformanceCounter的精度為us級(jí) */ void calcByQueryPerformanceCounter() { LARGE_INTEGER frequency, startCount, stopCount; WINBOOL ret; //返回性能計(jì)數(shù)器每秒滴答的個(gè)數(shù) 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()<<"QueryPerformanceFrequency & QueryPerformanceCounter ="<<elapsed<<"us"; } } /** * time(NULL)精確度為s級(jí) */ void calcByTime() { time_t startTime = time(NULL); Sleep(SLEEP_TIME_MILL); time_t stopTime = time(NULL); long elapsed = stopTime - startTime; qDebug()<<"time(NULL) ="<<elapsed<<"s"; } int main(int argc, char *argv[]) { calcByQtimeElapsed(); calcByQtimeCurrentTime(); calcByClock(); calcByTickCount(); // calcByTimeGetTime(); calcByGetTimeOfDay(); calcByQueryPerformanceCounter(); calcByTime(); system("pause"); return 0; }
感謝各位的閱讀,以上就是“C++怎么計(jì)算時(shí)間差”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C++怎么計(jì)算時(shí)間差這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。