linux c性能测试的时间间隔获取方法
Posted baymax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux c性能测试的时间间隔获取方法相关的知识,希望对你有一定的参考价值。
一、clock_t clock(void)函数
说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成毫秒或者秒。换算为毫秒需要除以1000,若换算为秒则除以CLOCKS_PER_SEC。在linux上,如果使用sleep函数,是不会计算在内的。如果处理器时间使用的是不可用的,或者它的值不能被表示,函数返回值为(clock_t)-1。具体查看以下例子(GCC编译):
1 int main(int argc, char *arg[]) 2 { 3 printf("CLOCKS_PER_SEC = %lf\n", (double)(CLOCKS_PER_SEC)); 4 clock_t time = clock(); 5 sleep(5); 6 int i; 7 for(i = 0; i < 1000000000; i++){} 8 clock_t second_time = clock(); 9 printf("ms:%lf\n", (double)((second_time-time) / 1000)); 10 printf("s:%lf\n", (double)((second_time-time) / CLOCKS_PER_SEC)); 11 12 return 0; 13 14 }
二、time_t time(time_t *t)函数
说明:返回从1970年1月1日00:00:00开始到现在的秒数,如果t不为空,则将结果也保存在t指向的内存中。具体查看以下例子(GCC编译):
1 int main(int argc, char *arg[]) 2 { 3 int i; 4 time_t first_time = time(NULL); 5 for(i = 0; i < 1000000000; i++){} 6 time_t second_time = time(NULL); 7 printf("s:%lf\n", (double)(second_time-first_time)); 8 9 return 0; 10 11 }
三、int gettimeofday(struct timeval *tv, struct timezone *tz) 函数
说明: struct timeval{
long tv_sec; //秒
long tv_usec; //微秒
};
将目前的时间保存在tv指向的内存中,tz结构体设置为NULL即可。具体查看以下例子(GCC编译):
1 int main(int argc, char *arg[]) 2 { 3 struct timeval first_time, second_time; 4 gettimeofday(&first_time, NULL); 5 sleep(2); 6 gettimeofday(&second_time, NULL); 7 double time_val = (second_time.tv_sec - first_time.tv_sec) * 1000000 + second_time.tv_usec - first_time.tv_usec; 8 printf("time_val(ms) = %lf\n", time_val / 1000.0); 9 10 return 0; 11 12 }
以上是关于linux c性能测试的时间间隔获取方法的主要内容,如果未能解决你的问题,请参考以下文章
性能测试如何用一条命令完全掌握linux系统性能监控(top高阶用法)