1、使用 clock() 函数
C 标准库中,clock()
函数可以用来获取程序执行的 CPU 时间。它返回程序自启动以来的时钟周期数,单位是 CLOCKS_PER_SEC
,通常是每秒 1000000
或 1000000000
个时钟周期,取决于平台。
#include <stdio.h> #include <time.h> int main() { clock_t start, end; double cpu_time_used; start = clock(); // 记录开始时间 // 你的程序代码 for (int i = 0; i < 100000000; i++); // 模拟计算任务 end = clock(); // 记录结束时间 cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC; // 计算程序运行的时间(秒) printf("程序执行时间:%f 秒\n", cpu_time_used); return 0; }
2、使用 time 命令(Linux / macOS)
在命令行上直接计算程序的执行时间,可以使用 time 命令。这种方法非常适用于脚本和命令行操作。
$ time ./your_program
time
命令会输出程序的运行时间,real
实际经过的时间(包括等待时间)。user CPU
在用户模式下的时间。sys CPU
在内核模式下的时间。
3、使用 gettimeofday() 函数(Linux)
gettimeofday()
函数可以提供更精确的时间度量(微秒级别),适用于需要高精度计时的应用场景。
#include <stdio.h> #include <sys/time.h> int main() { struct timeval start, end; gettimeofday(&start, NULL); // 记录开始时间 // 程序代码 for (int i = 0; i < 100000000; i++); // 模拟计算任务 gettimeofday(&end, NULL); // 记录结束时间 double time_taken = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1000000.0; printf("程序执行时间:%f 秒\n", time_taken); return 0; }
4、使用 QueryPerformanceCounter()(Windows)
如果在 Windows 上开发程序,可以使用 QueryPerformanceCounter()
和 QueryPerformanceFrequency()
来计算程序的执行时间。
#include <stdio.h> #include <windows.h> int main() { LARGE_INTEGER start, end, frequency; QueryPerformanceFrequency(&frequency); // 获取频率 QueryPerformanceCounter(&start); // 获取开始时间 // 你的程序代码 for (int i = 0; i < 100000000; i++); // 模拟计算任务 QueryPerformanceCounter(&end); // 获取结束时间 double time_taken = (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart; printf("程序执行时间:%f 秒\n", time_taken); return 0; }