linux时间的应用之计算消耗时间

本文介绍了在Linux环境中计算程序执行时间的步骤,通过引入相关库来实现对时间的精确测量,帮助进行运维监控和性能优化。
摘要由CSDN通过智能技术生成

一、是什么?

时间
Wall Time  真实时间
这是真实世界中的物理时间和日期,也就是说,是墙壁上挂钟的时间,
当和进程用户交互或对事件添加时间戳时,会使用墙钟时间.
进程时间(Process Time)
这是进程在处理器上消耗的时间,它包括用户空间代码本身消耗的时间。
单调时间
这种时间类型是严格线性递增的。单调时间类型的重要性并不是在于
当前值,而是确保时间是严格线性递增的,可以利用该特性计算两次
时间采样的差值.


相对时间
它是相对于某些基准时间的差值,例子,比如是5秒之后,10分钟之后,24小时核酸检测
,每秒刷新屏幕60.
绝对时间
它表示不含任何基准的时间.1968325号中午.

内核启动一个周期性计时器,称为system timer,为tick和jiffy,运行的tick
计数称为jiffies计数器.
在Linux,系统计时器的频率称为HZ.
系统计时器每秒100,100HZ,jiffy为0.01.
1000HZ,0.001.

意外断电可以通过hwclock将时钟更新为其他时间.
时间管理的任务:
(1)设定和取得当前墙钟的时间
(2)计算消耗时间
(3)睡眠一段时间
(4)执行精确时间测量
(5)控制计数器


时间的数据结构
time.h 
typedef long time_t;  //32 在2038千年虫   64位 
微秒级精度:
#include<sys/time.h>
struct timeval
{
   
  time_t tv_sec;         //seconds 
  suseconds_t tv_usec;   //ms 
};
纳秒级精度
#include<time.h>
struct timespec
{
   
   time_t tv_sec;
   long tv_nsec;
};
对时间分解:
#include<time.h>
struct tm
{
   
   int tm_sec;
   int tm_min;
   int tm_hour;
   int tm_mday;
   int tm_mon;
   int tm_year;
   int tm_wday;
   int tm_isdst;
};

POSIX时钟:
CLOCK_REALTIME:系统的真实时间
CLOCK_MONOTONIC:单调递增时间
CLOCK_PROCESS_CPUTIME_ID:处理器给每个进程的高精度时钟.

链接库:
-lrt 


取得当前时间:
#include<sys/time.h>
struct timeval
{
   
	time_t      tv_sec;     /* seconds */
	suseconds_t tv_usec;    /* microseconds */
};

int gettimeofday(struct timeval*tv,struct timezone*tz);
微秒级精度,后面的参数始终为NULL.

#include<time.h>
struct timespec
{
   
   time_t tv_sec;//seconds 
   long tv_nsec; //nanseconds 
};
int clock_gettime(clockid_t clock_id,struct timespec*ts);


睡眠和等待:
让进程睡眠指定的时间.
#include<unistd.h>
void usleep(unistd long usec);

struct timeval tv = 
{
   
  .tv_sec = 0,
  .tv_usec = 757
};
select(0,NULL,NULL,NULL,&tv);


overrun超时:
假设系统只能在10毫秒精度下测量并响应时间相关的事件,但是进程
需要1毫秒的睡眠。 实际上需要9毫秒才能产生,不是1毫秒.

为了在驱动程序中打印出一次DMA传输所花费的时间,
在DMA传输开始前记录start_jiffies = jiffies;然后
进行DMA传输,在DMA传输结束后记录下end_jiffies = jiffies
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天6点半起床10点半睡觉和今天早晚运动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值