C 獲取函式執行時間

2021-08-20 23:01:42 字數 1233 閱讀 2472

第一種方法:

gettickcount()獲取系統啟動後的時間間隔,精確度有限,跟cpu有關。

第二種方法:

queryperformancecounter()這個函式返回高精確度效能計數器的值,它可以以us為單位計時.但是它確切的精確計時的最小單位是與系統有關的,所以,必須要查詢系統以得到queryperformancecounter()返回的嘀噠聲的頻率.

queryperformancefrequency()提供了這個頻率值,返回每秒嘀噠聲的個數.

有了兩個函式,可以將其封裝在乙個time類中,從建立物件開始計時,直至物件銷毀。

class time 

~time()

private:

large_integer nfreq;

large_integer nbegintime;

large_integer nendtime;

double time = 0;

};void test()

}int main()

在linux下可用。

rdtsc指令,在intel pentium以上級別的cpu中,有乙個稱為「時間戳(time stamp)」的部件,它以64位無符號整型數的格式,記錄了自cpu上電以來所經過的時鐘週期數。由於目前的cpu主頻都非常高,因此這個部件可以達到納秒級的計時精度。這個精確性是上述幾種方法所無法比擬的.在pentium以上的cpu中,提供了一條機器指令rdtsc(read time stamp counter)來讀取這個時間戳的數字,並將其儲存在edx:eax暫存器對中。由於edx:eax暫存器對恰好是win32平台下c++語言儲存函式返回值的暫存器,所以我們可以把這條指令看成是乙個普通的函式呼叫,因為rdtsc不被c++的內嵌彙編器直接支援,所以我們要用_emit偽指令直接嵌入該指令的機器碼形式0x0f、0x31

#if defined (__i386__)

static __inline__ unsigned

long

long getcyclecount(void)

#elif defined (__x86_64__)

static __inline__ unsigned

long

long getcyclecount(void)

#endif

void test8()

C 函式執行時間

遞迴和迴圈執行時間比較 c 計算函式執行時間system.diagnostics.stopwatch或者system.datetime.now using system using system.collections.generic using system.diagnostics using s...

C 獲取程式執行時間

命名空間 system.diagnostics stopwatch 例項可以測量乙個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。在典型的 stopwatch 方案中,先呼叫 start 方法,然後呼叫 stop 方法,最後使用 elapsed 屬性檢查執行時間。stopwatch 例項或...

C 獲取程式執行時間

需要用到system.diagnostics命名空間中的stopwatch類!stopwatch類其中有乙個屬性elapsedmilliseconds。該屬性是獲取當前執行時間,以毫秒為單位!其中還有start和stop方法,乙個是開始測量當前執行時間,乙個是暫停測量!在測試程式中定義乙個stopw...