计算 C 程序的执行时间对于优化程序性能非常重要。C 语言提供了多种方法来测量程序的执行时间,从使用标准库函数到操作系统级别的计时工具。

1、使用 clock() 函数

C 标准库中,clock() 函数可以用来获取程序执行的 CPU 时间。它返回程序自启动以来的时钟周期数,单位是 CLOCKS_PER_SEC,通常是每秒 10000001000000000 个时钟周期,取决于平台。

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

推荐文档

相关文档

大家感兴趣的内容

随机列表