目錄
- 1.
clock_t
- 2.
clock()
- 2.1 函式定義
- 3. 示例
- 4. 注意事項
在C++中,clock_t
和 clock()
是與時間度量和效能測量相關的庫函式,主要用於計算程式執行的時間。
1. clock_t
clock_t
是在 <ctime>
或 <time.h>
中定義的一個型別,通常用於儲存由 clock()
返回的處理器時間值。這個型別可以是一個整數或浮點數(具體取決於實現)。
在標準庫中,clock_t
定義:
typedef /* implementation defined */ clock_t;
clock_t
型別通常用於儲存呼叫 clock()
函式的結果,以便後續計算時間間隔。
2. clock()
clock()
是一個用於返回程式執行時間的函式。它返回的值是處理器時間(通常以時鐘週期為單位),自程式開始執行(通常指 main()
函式開始)以來所消耗的處理器時間。
clock()
函式返回的值是以 clock_t
型別表示的,這個值需要除以常量 CLOCKS_PER_SEC
來轉換為秒。CLOCKS_PER_SEC
是一個宏,表示每秒鐘的時鐘週期數。
2.1 函式定義
clock_t clock(void);
返回值:
- 如果成功,
clock()
返回自程式啟動以來消耗的處理器時間,以clock_t
型別表示。 - 如果失敗,通常返回
-1
,表示無法獲取處理器時間。
3. 示例
透過在程式碼塊的開始和結束分別呼叫 clock()
,可以計算程式碼的執行時間。通常,需要將兩個時間差除以 CLOCKS_PER_SEC
以轉換為秒。
#include <iostream>
#include <ctime> // 包含 clock() 和 clock_t
int main() {
clock_t start_time = clock(); // 開始計時
// 模擬耗時操作
for (long i = 0; i < 100000000; ++i);
clock_t end_time = clock(); // 結束計時
// 計算消耗的時間,除以 CLOCKS_PER_SEC 得到秒數
double elapsed_time = static_cast<double>(end_time - start_time) / CLOCKS_PER_SEC;
std::cout << "程式執行時間: " << elapsed_time << " 秒" << std::endl;
return 0;
}
輸出:
程式執行時間: 0.03 秒
4. 注意事項
clock()
計算的是處理器的執行時間,而不是牆上掛鐘時間。也就是說,它只統計程式佔用CPU的時間。如果程式處於休眠狀態(比如透過sleep()
函式掛起),這個時間將不包括在clock()
的返回值中。- 如果程式是並行執行的,那麼
clock()
可能會返回多個執行緒總和的處理器時間。 clock()
返回的時間精度由系統決定,不同的系統可能具有不同的時鐘週期精度。