📜  测量时间 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:27:00.113000             🧑  作者: Mango

测量时间 - C 编程语言

在C编程中,测量时间是非常重要的一个操作,因为很多时候需要对程序的运行时间进行评估和优化。在本文中,我们将介绍C语言中常用的几种测量时间的方法。

1. clock()函数

clock()函数返回程序执行以来的处理器时钟数,以毫秒为单位。它的函数原型如下:

#include <time.h>
clock_t clock(void);

示例代码:

#include <stdio.h>
#include <time.h>

int main() {
   clock_t start_t, end_t; // 声明 clock_t 类型变量
   double total_t;

   start_t = clock(); // 记录开始时间

   // 执行需要测量时间的程序
   for (int i = 0; i < 1000000; i++) {
      printf("i = %d\n", i);
   }

   end_t = clock(); // 记录结束时间
   total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC; // 计算程序运行时间
   printf("程序运行时间为: %f 秒\n", total_t); // 输出程序运行时间

   return 0;
}

输出结果:

i = 0
i = 1
i = 2
......
i = 999998
i = 999999
程序运行时间为: 0.036000 秒
2. gettimeofday()函数

gettimeofday()函数返回当前时间和时区信息。它的函数原型如下:

#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);

示例代码:

#include <stdio.h>
#include <sys/time.h>

int main() {
   struct timeval start_t, end_t;
   double total_t;

   gettimeofday(&start_t, NULL); // 记录开始时间

   // 执行需要测量时间的程序
   for (int i = 0; i < 1000000; i++) {
      printf("i = %d\n", i);
   }

   gettimeofday(&end_t, NULL); // 记录结束时间
   total_t = (double)(end_t.tv_usec - start_t.tv_usec) / 1000000 + (double)(end_t.tv_sec - start_t.tv_sec); // 计算程序运行时间
   printf("程序运行时间为: %f 秒\n", total_t); // 输出程序运行时间

   return 0;
}

输出结果:

i = 0
i = 1
i = 2
......
i = 999998
i = 999999
程序运行时间为: 0.038042 秒
3. clock_gettime()函数

clock_gettime()函数可以获取高分辨率系统时间,它的函数原型如下:

#include <time.h>
int clock_gettime(clockid_t clock_id, struct timespec *tp);

示例代码:

#include <stdio.h>
#include <time.h>

int main() {
   struct timespec start_t, end_t;
   double total_t;

   clock_gettime(CLOCK_MONOTONIC, &start_t); // 记录开始时间

   // 执行需要测量时间的程序
   for (int i = 0; i < 1000000; i++) {
      printf("i = %d\n", i);
   }

   clock_gettime(CLOCK_MONOTONIC, &end_t); // 记录结束时间
   total_t = (double)(end_t.tv_nsec - start_t.tv_nsec) / 1000000000.0 + (double)(end_t.tv_sec - start_t.tv_sec); // 计算程序运行时间
   printf("程序运行时间为: %f 秒\n", total_t); // 输出程序运行时间

   return 0;
}

输出结果:

i = 0
i = 1
i = 2
......
i = 999998
i = 999999
程序运行时间为: 0.038043 秒
总结

以上介绍了C语言中常用的三种测量时间的方法。其中,clock()函数和gettimeofday()函数适用于大多数平台,clock_gettime()函数适用于支持POSIX的操作系统。在使用时需要根据实际情况选择合适的方法。