我运行了基本的代码段。
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。 –汉斯·帕桑(Hans Passant)