linux下如何求一个函数的运行时间(C语言实现)

clock()

功能:计算某程序从启动到函数调用占用CPU的时间
头文件:#include<stdio.h>
clock_t clock(void)
        clock_t:是一种数据类型,是long int类型
返回值:该函数返回的是从程序开始运行到调用clock函数时所打的点数

定义两个clock_t变量begin、end,在调用函数之前调用clock函数,在程序执行完之后,在调用一次clock函数,此时end -begin得结果就是总打打点数,再用此结果除以CLOCKS_PER_SEC,就可得出程序运行用了多少秒了

ps:每秒所打的点数为CLOCKS_PER_SEC
CLOCKS_PER_SEC是一个常数,直接使用即可,在头文件#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void test()
{
    int a=989478945;
    while(a--)
    {}
}
int main()
{
    clock_t begin,end;
    begin=clock();
    test();
    end=clock();
    printf("%lf\n",(double)(end-begin)/CLOCKS_PER_SEC);
    //此处一定要强转,负责结果永远是0,因为整数/整数=0
    //end-begin是函数运行结束,总的打点数,除以每秒的打点数 ,就是函数的运行时间了,单位是S
    return 0;
}

运行结果:
这里写图片描述

在写循环的次数的时候,如果写的太小,就会出现结果是0,因为程序运行的太快了,基本忽略,故结果就会是0,如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void test()
{
    int a=9894;
    while(a--){
    }
}
int main()
{
    clock_t begin,end;
    begin=clock();
    test();
    end=clock();
    printf("%lf\n",(double)(end-begin)/CLOCKS_PER_SEC);
    return 0;
}

运行结果:
这里写图片描述

除号: '/'

除号在计算时,两边的数分为两种情况:
(1)除号的两边都是整数的话,那结果一定是整数
(2)除号两边的数如果有一边是小数,那结果就是小数(如果两边都是小数,那结果肯定是小数了)

猜你喜欢

转载自blog.csdn.net/dangzhangjing97/article/details/80171465