C语言--计算程序执行时间

C语言–计算程序执行时间

1. gettimeofday

精度1us

#include
#include

int main()
{
    /* 定义两个结构体 */
    struct timeval start;
    struct timeval end;
    unsigned long timer;
    /* 程序开始之前计时start */
    gettimeofday(&start, NULL);
    printf("hello world!\n");
    /* 程序块结束后计时end */
    gettimeofday(&end, NULL);
    /* 统计程序段运行时间(unit is usec)*/
    timer = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;
    printf("timer = %ld us\n", timer);
    return 0;
}

输出结果:

$ ./time
hello world!
timer = 47 us

2. clock

精度能达到1us

#include 
#include 
#include 

int main()
{
    clock_t begin, end;
    double cost;
    //开始记录
    begin = clock();
    /*待测试程序段*/
    printf("hello world!\n");
    //结束记录
    end = clock();
    cost = (double)(end - begin)/CLOCKS_PER_SEC;
    printf("constant CLOCKS_PER_SEC is: %ld, time cost is: %lf secs", CLOCKS_PER_SEC, cost);
}

输出结果

$ ./time 
hello world!
constant CLOCKS_PER_SEC is: 1000000, time cost is: 0.000042 secs

3. time命令

$ time ls
0.00s user 0.00s system 0% cpu 0.001 total

user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
total指进程时间之和。精度1ms

你可能感兴趣的:(c语言,Linux,C)