1. 写在前面
在分析算法的性能时,我们通过算法的时间复杂度可以从理论上分析出算法的大致高阶,但是当我们想具体比较一下算法真正的性能时,往往希望在机器上测试并记录其运行的真实时间,那么就要用到C/C++中一些高精度时间函数。
2. 高精度时间结构体和函数
- 微秒
#include <sys/time.h>
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
获取时间的函数:int gettimeofday(struct timeval *tv, struct timezone *tz);
demo:
- 纳秒
#include <time.h>
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
- chrono
C++11推出的纳秒级时间chrono.
auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
// print timediff
std::cout << (double)(duration.count()) * std::chrono::microseconds::period::num / std::chrono::microseconds::period::den << "s" << std::endl;
3. 高精度延时
若想简单的话,可以用精度不太高的系统函数sleep()和usleep()实现秒和微秒级定时,如果想高精度定时,查阅了大量博客发现,基本上都是用章节2中高精度时间来即使,即:
void timingus(size_t us)
{
auto start = std::chrono

本文详细介绍C++中实现高精度时间测量的方法,包括微秒和纳秒级的时间结构体和函数,如timeval和timespec,以及C++11的chrono库。文章提供了测试代码示例,对比不同方法的精度,并介绍了如何使用这些工具进行高精度延时。
最低0.47元/天 解锁文章
1672

被折叠的 条评论
为什么被折叠?



