C 獲取系統當前時間 精確到微秒

2021-07-11 15:09:10 字數 1034 閱讀 9368

在除錯、日誌輸出、**優化時,我們常常需要獲得系統的時間。在一些效能要求高的**優化時,對時間的精確度還比較高。在網上找不高質量的**,便自己研究了一下,**如下(能滿足跨平台的要求,單位精確到微秒):

#ifdef _win32

#include

#else

#include

#endif // _wind32

// 定義64位整形

#if defined(_win32) && !defined(cygwin)

typedef __int64 int64_t;

#else

typedef long

long int64t;

#endif // _win32

// 獲取系統的當前時間,單位微秒(us)

int64_t getsystimemicros()

在類unix平台(linux、os-x)使用gettimeofday方法,這個簡單,沒什麼好說,自己看**。在windows平台使用getsystemtimeasfiletime方法,這個需解釋一下。

getsystemtimeasfiletime的輸出引數是lpfiletime,其結構如下:

typedef

struct _filetime filetime, *pfiletime;

這個結構可表示為乙個64位的數值,兩個成為分別**低32位和高32位,代表2023年1月1日開始到現在的計數器,計數間隔為100納秒。

li.lowpart = ft.dwlowdatetime

;li.highpart = ft.dwhighdatetime

;

是將結構體轉換成64位整形large_integer::quadpart。

#define epochfiletime (116444736000000000ul)表示從2023年1月1日0:0:0:000到2023年1月1日0:0:0:000的時間(單位100ns)。

redis獲取當前時間精確到微秒

在redis取得當前時的方法為執行time命令 127.0.0.1 6382 time 1 1495780564 2 894089 第一行為以 unix 時間戳格式表示已經過去的秒數 第二行為當前這一秒已經過去的微秒數 所以如果你想獲得當前已經過去的總的微秒數 當前時間戳 可以執行如下 eval l...

獲取系統當前時間(微秒)

在除錯 日誌輸出 優化時,我們常常需要獲得系統的時間。在一些效能要求高的 優化時,對時間的精確度還比較高。在網上找不高質量的 便自己研究了一下,如下 能滿足跨平台的要求,單位精確到微秒 ifdef win32 include else include endif wind32 定義64位整形 if ...

C C 獲取精確到微秒級的系統時間

最近要為自己的專案開發乙個日誌模組,需要獲取精確到微秒級的系統時間,查閱了一些資料,發現在c c 裡面可以通過 gettimeofday struct timeval tv,struct timezone tz 和 localtime const time t timep 這兩個函式的配合使用來得到...