CLOCK_REALTIME,CLOCK_MONOTONIC,CLOCK_MONOTONIC_RAW值。

时间:2017-12-01 09:26:42

标签: c time clock

我运行了基本的代码片段。

void emptyFunction(){
};

int main(){

const int conversion = 1000000000;
unsigned long long func_sum = 0;
clock_gettime(CLOCK_REALTIME, &funcTimeStart);
emptyFunction();
clock_gettime(CLOCK_REALTIME, &funcTimeEnd);

func_sum=((funcTimeEnd.tv_sec*nanoConversion)+funcTimeEnd.tv_nsec)-((funcTimeStart.tv_sec*nanoConversion)+funcTimeStart.tv_nsec);

这是为了测试运行空函数所需的时间。

我每次运行10次,我的值如下:

如果我用过:

CLOCK_REALTIME - 我的值是57-108纳秒

CLOCK_MONOTONIC - 我的值是39-98纳秒

CLOCK_MONOTONIC_RAW - 我的值是282-487纳秒

CLOCK_PROCESS_CPUTIME_ID - 我的值是662-1049纳秒

根据我的理解,CLOCK_REALTIME使用挂钟时间来测量,而CLOCK_PROCESS_CPUTIME_ID使用CPU运行代码的时间。那么CLOCK_PROCESS_CPUTIME_ID总是会有一个较低的数字吗?为什么不是这里的情况?

1 个答案:

答案 0 :(得分:0)

您没有测量空函数的执行时间,而是测量了clock_gettime()函数实现中的开销量。当然,这取决于您传递的clockid_t。 –汉斯·帕桑特