Linux下的精确计时函数

std::chrono::high_resolution_clock::time_point tnow = std::chrono::high_resolution_clock::now();
std::chrono::high_resolution_clock::time_point tpost = std::chrono::high_resolution_clock::now();
std::cout << "open camera cost time: " << std::chrono::duration_cast<std::chrono::duration<double>>(tpost - tnow).count() * 1000 << " ms" << std::endl;

目前确定的准确的计时函数,mark一下,基本上相机的库里面都是用的这个

Linux环境下,可以使用多种计时函数来实现精确到毫秒的计时需求。最常用的是`gettimeofday`函数,它提供了微秒级的精度。此外,`clock_gettime`函数也提供高精度的时间读取,适用于需要高分辨率计时的应用。`nanosleep`函数可以用来实现毫秒级的延迟或睡眠。以下是这些函数的基本用法和示例: 1. `gettimeofday`函数: ```c #include <sys/time.h> struct timeval { long tv_sec; // 秒数 long tv_usec; // 微秒数 }; int gettimeofday(struct timeval *tv, struct timezone *tz); ``` 这个函数填充一个`timeval`结构体,其中包含了自纪元(通常是1970年1月1日)以来的秒数和微秒数。通过差值计算,可以得到毫秒级别的精确时间。 2. `clock_gettime`函数: ```c #include <time.h> int clock_gettime(clockid_t clk_id, struct timespec *tp); ``` 这个函数填充一个`timespec`结构体,其中包含了纳秒级的时间值。虽然这个函数提供了纳秒级别的精度,但通常也可以用来实现毫秒级的时间测量。 3. `nanosleep`函数: ```c #include <time.h> int nanosleep(const struct timespec *req, struct timespec *rem); ``` 这个函数使程序暂停执行指定的时间长度。`req`参数包含了要暂停的秒数和纳秒数,而`rem`参数如果非空,则会返回实际未休眠的剩余时间。该函数通常用于实现毫秒级的时间延迟。 需要注意的是,尽管这些函数提供了毫秒级的精度,但实际上系统的调度粒度和硬件的计时精度可能会对实际的计时精度造成影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值