簡體   English   中英

如何在Linux上獲取C ++代碼塊的時鍾滴答? clock()結果毫無意義。

[英]how to get clock ticks for a C++ code block on Linux ? clock() results make no sense.

我正在嘗試測試pow()的時鍾滴答。

clock_t startTime = clock();
for (int ii = 0 ; ii < moreIter ; ++ii)
{
   for (int i = 0 ; i < totalIte ; ++i)
   P0Table[i] = pow( 1 + baseTable[i] + baseTable1[i]  , expTablr[i]);
}
clock_t endTime = clock();
clock_t powTime = endTime - startTime;

如果moreIter為1且totalIte為5000,則powTime始終為0。

我只是跟隨: http : //www.cplusplus.com/reference/clibrary/ctime/clock/

為什么呢?

任何幫助將不勝感激。

嘗試使用C ++ 11 <chrono>標頭。

typedef std::chrono::high_resolution_clock Clock;

auto start = Clock::now();
/* do work */
auto end = Clock::now();

auto timeTaken = end - start;

clock()分辨率不是特別高,您可能需要進行更多次迭代才能獲得非零的結果。

在Linux上,根據CONFIG_HZ設置來計算CPU時間,這幾天通常為100-1000 Hz。 因此,最好的分辨率是1-10毫秒。

使用clock_gettime(...,CLOCK_MONOTONIC),您可以獲得納秒分辨率的壁鍾時間,盡管當然,在這種分辨率下,您可能需要考慮到調用本身需要花費一些時間(上次檢查時IIRC大約20 ns) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM