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;
}
运行结果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0EEVNFzZU5UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwUDM4Y2N5MmZzQDMlZ2M4ADNmRzN4ATYxMzM2EjNkRzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)