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;
}