我跑的代码基本片断。
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总是有一个较小的数字?为什么不是这样的吗?
你没有衡量一个空函数的执行时间,您在clock_gettime()函数实现测量开销的金额。当然,这取决于你clockid_t传递什么。 - 汉斯帕桑特