首頁 > 後端開發 > C++ > 如何準確測量 C 和 C 中經過的時間?

如何準確測量 C 和 C 中經過的時間?

Patricia Arquette
發布: 2024-12-22 20:10:12
原創
736 人瀏覽過

How Can I Accurately Measure Elapsed Time in C and C  ?

C 和 C 語言中的高效運行時間測量

準確測量運行時間對於程式設計中的效能分析至關重要。然而,標準 C 函數 time() 對於短期任務可能不可靠。

在 C 中使用 gettimeofday()

為了解決這個問題,C 程式設計師可以使用 gettimeofday() 函數,該函數會傳回微秒精確度的當前時間。以下是一個範例:

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);
登入後複製

在C 中使用std::chrono

在C 中,std::chrono 函式庫提供了一種更現代、更便攜的測量解決方案經過的時間。考慮這個例子:

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;
登入後複製

理解結果

gettimeofday() 和std::chrono 的輸出將回傳以秒和微秒為單位的時間差/納秒。例如:

  • 所用時間:4 秒25 微秒(使用gettimeofday())
  • 所用時間:26,339 微秒(使用std::chrono)

在第一個範例中,經過的時間是4.025秒,而在第二個範例中例如,它是 0.026339 秒。請注意,std::chrono 預設會傳回奈秒,因此如果需要,您可能需要手動將它們轉換為微秒或秒。

以上是如何準確測量 C 和 C 中經過的時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板