㈠ unix下獲取精確到毫秒的系統的時間
C語言如何獲得精確到毫秒的時間
在做測試或性能優化時,經常要知道程序運行的時間,在Linux系統可以使用time命令來計算程序運行運行所消耗的時間,能精確到毫秒,如果要精確到代碼塊或某個操作運行時所消耗的時間,time命令就不給力了。如果對時間的精度要求不高的話,可以調用標准C的介面time來得到開始和結束的時間,再調用difftime介面來計算時間差,精度是秒,代碼如下所示:
time.c
如果要讓程序休眠3秒,Windows使用Sleep(3000),Linux使用sleep(3),即Windows的Sleep介面的參數的單位是毫秒,Linux的sleep介面的參數的單位是秒。 如果需要精確到毫秒,以上程序就發揮不了作用,如果在java要達到這要求就很簡單了,代碼如下所示:
Time.java
通過Google找了一些資料後,發現C語言里沒有標準的介面可以獲得精確到毫秒的時間,都會調用到與操作系統相關的API,下面會分別介紹在Linux和Windows系統下的多種實現方法,希望對大家有幫助。
使用gettimeofday介面:
gettimeofday.c
gettimeofday能得到微秒數,比毫秒還要更精確。
使用ftime介面:
ftime.c
使用GetTickCount介面:
下載:
GetTickCount.c
Windows系統下有些編譯器使用printf輸出64位整數參數要使用%I64d,比如VC。
使用QueryPerformanceX介面:
QueryPerformance.c
使用GetSystemTime介面:
GetSystemTime.c
這種方法沒給出計算時間差的實現,只給出如何用GetSystemTime調用得到當前時間,計算時間差比較簡單,根據年、月、日、時、分秒和毫秒計算出一個整數,再將兩整數相減即可。
以上是通過Google找到一些用C語言獲得精確到毫秒的實現方法,對比Linux和Windows的方法,發現兩個系統的API命名很不一樣,Linux介面名要麼都是小寫要麼使用下劃線(_)來分隔單詞,而Windows介面名中的單詞首字母大寫。