2023-4-11-chrono库用法学习



*★,°*:.☆( ̄▽ ̄)/$:*.°★*

欢迎来到汤姆的csdn博文
喜欢的朋友可以关注一下,下次更新不迷路
私聊获取个人订阅号哦,欢迎订阅共同学习
可以加入大家庭群聊,一起学习天天有福利





本文摘要

2023-4-11-chrono库用法学习_第1张图片

听说这个库计算出来的时间精度很高,我来试一试。


目录

  • 本文摘要
  • 一、代码展示
  • ‍二、运行结果
  • 文章总结



一、代码展示

#include 
#include 
#include "chrono"


int main() {
    //num为分子 den为分母
    std::cout << std::chrono::milliseconds::period::num << std::endl;//输出1
    std::cout << std::chrono::milliseconds::period::den << std::endl;//输出1000  解释一下怎么来的  一秒除以一千就是一毫秒 所以分子是1 分母是1000
    //物理时间计时,steady_clock:是固定的时钟,相当于秒表。开始计时后,时间只会增长并且不能修改,适合用于记录程序耗时,high_resolution_clock:和时钟类 steady_clock 是等价的(是它的别名)。
    auto start = std::chrono::system_clock::now();
    for (int i = 0; i < 10000000; i++) {

    }
    auto end = std::chrono::system_clock::now();
    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
    std::cout << double(duration.count()) << std::endl;


    //定义毫秒级别的时钟类型
    typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> microClock_type;
    //获取当前时间点,windows system_clock是100纳秒级别的(不同系统不一样,自己按照介绍的方法测试),所以要转换
    microClock_type tp = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now());
    //获取ctime格式的时间
    time_t tt = std::chrono::system_clock::to_time_t(tp);
    char _time[50];
    ctime_s(_time, sizeof(_time), &tt);
    std::cout << "now time is : " << _time;
    //计算距离1970-1-1,00:00的时间长度,因为当前时间点定义的精度为毫秒,所以输出的是毫秒
    std::cout << tp.time_since_epoch().count() << std::endl;
    //定义时间间隔
    std::chrono::duration<double, std::ratio<9, 7>> d1(3);
    std::chrono::duration<double, std::ratio<6, 5>> d2(1);
    // d1 和 d2 统一之后的时钟周期 对于分子 6,、9 最大公约数为 3,对于分母 7、5 最小公倍数为 35,因此推导出的时钟周期为 ratio<3,35>
    std::chrono::duration<double, std::ratio<3, 35>> d3 = d1 - d2;
    std::cout << d3.count() << " tick" << std::endl;
    // 新纪元1970.1.1时间
    std::chrono::system_clock::time_point epoch;

    std::chrono::duration<int, std::ratio<60*60*24>> day(1);
    // 新纪元1970.1.1时间 + 1天
    std::chrono::system_clock::time_point ppt(day);

    using dday = std::chrono::duration<int, std::ratio<60 * 60 * 24>>;
    // 新纪元1970.1.1时间 + 10天
    std::chrono::time_point<std::chrono::system_clock, dday> t(dday(10));

    // 系统当前时间
    std::chrono::system_clock::time_point today = std::chrono::system_clock::now();

    // 转换为time_t时间类型
    time_t tm = std::chrono::system_clock::to_time_t(today);
    std::cout << "今天的日期是:    " << ctime(&tm);

    time_t tm1 = std::chrono::system_clock::to_time_t(today+day);
    std::cout << "明天的日期是:    " << ctime(&tm1);

    time_t tm2 = std::chrono::system_clock::to_time_t(epoch);
    std::cout << "新纪元时间:      " << ctime(&tm2);

    time_t tm3 = std::chrono::system_clock::to_time_t(ppt);
    std::cout << "新纪元时间+1天:  " << ctime(&tm3);

    time_t tm4 = std::chrono::system_clock::to_time_t(t);
    std::cout << "新纪元时间+10天: " << ctime(&tm4);

    return 0;
}

‍二、运行结果

2023-4-11-chrono库用法学习_第2张图片


文章总结

提示:这里对文章进行总结:

  简单的使用了解一下这个库怎么用。






更多好文推荐

2021-4月Python 机器学习——中文新闻文本标题分类
2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版
2022-10-31-基于用户的协同过滤推荐算法实现+MAE+RMSE
2022-11-28-大数据可视化,特征维度大于50
2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻

上一篇
End
下一篇

你可能感兴趣的:(汤姆C++算法糖,学习,c++,开发语言)