天天看点

基于Linux下C语言获取程序的执行时间

Linux中获取程序执行时间

    • 一、clock_gettime()
    • 二、代码测试

一、clock_gettime()

函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。

参数:

clk_id : 检索和设置的clk_id指定的时钟时间。

CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,

中间时刻如果系统时间被用户改成其他,则对应的时间相应改变

  CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

  CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间

  CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间

struct timespec

{

time_t tv_sec;

long tv_nsec;

};

注意:这个结构体是系统本身定义好的 ,使用时不用重新定义,直接使用就行。

二、代码测试

#include<time.h>
#include<stdio.h>
// struct timespec
// {
//     long tv_sec; /* 秒 */
//     long tv_nesc; /* 纳秒 */
// };
int fun(int x,int y)
{
    int z;
    z= x+y;
    printf("z=%d",z);
    return 0; 
}
int main()
{
    float time_s,time_ns,time_ms;
    struct timespec ts1,ts2; 
    clock_gettime(CLOCK_MONOTONIC,&ts1);//记录函数开始时间
    fun(3,4);
    clock_gettime(CLOCK_MONOTONIC,&ts2);//记录函数结束时间
    time_s = ts2.tv_sec - ts1.tv_sec;  //得到秒的时间
    time_ns = (ts2.tv_nsec - ts1.tv_nsec); //得到纳秒的时间
    //由于总的时间=time_s+time_ns
    //为了显示方便,将总的时间统一转化为毫秒
    time_ms = time_s*1000+time_ns/1000000;
    printf("run time is %fms",time_ms);
    return 0;
}

           

运行结果:

基于Linux下C语言获取程序的执行时间

继续阅读