08.12 看過來,看過來 C語言獲取系統時間的幾種方式

我下面具體的說下,關於C語言獲取系統時間的幾種方式:

關於C語言獲取系統時間的幾種方式:

1 使用time_t time( time_t * timer ) 精確到秒

函數名: time

頭文件:time.h

函數原型:time_t time(time_t * timer)

功能: 獲取當前的系統時間,返回的結果是一個time_t類型,其實就是一個大整數,其值表示從CUT(Coordinated Universal Time)時間1970年1月1日00:00:00(稱為UNIX系統的Epoch時間)到當前時刻的秒數。

2 使用clock_t clock() 得到的是CPU時間 精確到1/CLOCKS_PER_SEC秒

clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。

對clock函數定義如下:clock_t clock(void) ;

簡單而言,就是該程序從啟動到函數調用佔用CPU的時間。這個函數返回從“開啟這個程序進程”到“程序中調用clock()函數”時之間的CPU時鐘計時單元(clock tick)數,在MSDN中稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。其中clock_t是用來保存時間的數據類型,在time.h文件中

include

#include <

#include

int main(void)

{

long i = 10000000L;

clock_t start, finish;

double duration;

printf( "Time to do %ld empty loops is ", i) ;

start = clock();

while( i-- );

finish = clock();

duration = (double)(finish - start) / CLOCKS_PER_SEC;

printf( "%f seconds\\n", duration );

system("pause");

}

上面我們看到時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標準C/C++中,最小的計時單位是一毫秒。

3 計算時間差使用double difftime( time_t timer1, time_t timer0 )

4 使用DWORD GetTickCount() 精確到毫秒

GetTickCount(),這個是windows裡面常用來計算程序運行時間的函數;

DWORD dwStart = GetTickCount();

//這裡運行你的程序代碼

DWORD dwEnd = GetTickCount();

則(dwEnd-dwStart)就是你的程序運行時間, 以毫秒為單位

這個函數只精確到55ms,1個tick就是55ms。

5 要獲取高精度時間,可以使用

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)

獲取系統的計數器的頻率

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)

獲取計數器的值

然後用兩次計數器的差除以Frequency就得到時間。

更詳細學習資料的在我的頭條文章仔細的看下,只是粗略的概述了一遍,當然更詳細具體的可以自己去找資料,當然也可以加我的群哈368282579,可以交流的,群內也有針對C語言的0基礎的新手資料,C語言和C++的項目資源也是很豐富的,希望對各位有所幫助哈

看過來,看過來 C語言獲取系統時間的幾種方式


分享到:


相關文章: