Я пытаюсь проверить такты часов 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 время процессора вычисляется по iirc в зависимости от настройки CONFIG_HZ, обычно 100-1000 Гц в эти дни. Таким образом, разрешение 1-10 мс — лучшее, что вы можете получить.
С помощью clock_gettime (…, CLOCK_MONOTONIC) вы можете получить время настенных часов с наносекундным разрешением, хотя, конечно, при таком разрешении вы можете принять во внимание, что сам вызов занимает немного времени (IIRC около 20 нс последний раз, когда я проверял) ,