C++(clock())

做梦当财神發表於2024-09-07

目錄
  • 1. clock_t
  • 2. clock()
    • 2.1 函式定義
  • 3. 示例
  • 4. 注意事項



在C++中,clock_tclock() 是與時間度量和效能測量相關的庫函式,主要用於計算程式執行的時間。



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() 返回的時間精度由系統決定,不同的系統可能具有不同的時鐘週期精度。


相關文章