第一種方法:
gettickcount()獲取系統啟動後的時間間隔,精確度有限,跟cpu有關。
第二種方法:
queryperformancecounter()這個函式返回高精確度效能計數器的值,它可以以us為單位計時.但是它確切的精確計時的最小單位是與系統有關的,所以,必須要查詢系統以得到queryperformancecounter()返回的嘀噠聲的頻率.有了兩個函式,可以將其封裝在乙個time類中,從建立物件開始計時,直至物件銷毀。queryperformancefrequency()提供了這個頻率值,返回每秒嘀噠聲的個數.
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...