[英]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.