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性能测试的时间间隔获取方法的主要内容,如果未能解决你的问题,请参考以下文章

C#Stopwatch的使用,性能测试

性能测试如何用一条命令完全掌握linux系统性能监控(top高阶用法)

性能测试如何用一条命令完全掌握linux系统性能监控(top高阶用法)

获取时间间隔并在目标 C 中播放声音

linux网络测试命令

性能测试Linux性能监控命令——sar详解