CLOCK_REALTIME,CLOCK_MONOTONIC,CLOCK_MONOTONIC_RAW值。

问题描述 投票:0回答:1

我跑的代码基本片断。

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总是有一个较小的数字?为什么不是这样的吗?

c time clock
1个回答
0
投票

你没有衡量一个空函数的执行时间,您在clock_gettime()函数实现测量开销的金额。当然,这取决于你clockid_t传递什么。 - 汉斯帕桑特

© www.soinside.com 2019 - 2024. All rights reserved.