ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux下C++跨平台获取高精度时间戳

2021-02-10 14:29:04  阅读:508  来源: 互联网

标签:std chrono C++ 获取 跨平台 时间 Linux


简介


C++语言本身及Linux操作系统均提供了时钟相关的函数,可以方便获取时间。

但是,在一些场合下,需要的时间精度不同,又不能通用。

如果依赖于Linux平台,又不能做到跨平台。

所以优化考虑使用C++语言本身提供的函数。

本文介绍使用 std::chrono 命名空间下的函数来获取时间戳。需要 c++11 支持。

关于时间函数的介绍,请参考 Linux c++获取本地毫秒级精确时间

获取时间跨度


在测试一段程序的耗时时,经常需要统计时间跨度。

示例代码如下:

int countTimeConsume()
{
    using namespace std::chrono;

    high_resolution_clock::time_point t1 = high_resolution_clock::now();

    std::cout << "printing out 1000 stars...\n";
    for (int i = 0; i < 1000; ++i)
        std::cout << "*";
    std::cout << std::endl;

    high_resolution_clock::time_point t2 = high_resolution_clock::now();

    duration<double, std::milli> time_span = t2 - t1; // 根据需要的精度调整参数

    std::cout << "It tooks me " << time_span.count() << " ms\n";

    return 0;
}

获取本地时间戳


有时,需要的是当时的时间戳,这样方便记录统计。

代码如下:

auto ts = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); // 根据需要调整时间精度,这里是us
// 返回类型为int64_t

小结


时间统计在对程序进行性能分析和优化时经常使用,可以封装到公用类中使用。

注意,由于Linux系统不是实时操作系统,当时间精度特别小时,可能会有一定误差。

标签:std,chrono,C++,获取,跨平台,时间,Linux
来源: https://blog.csdn.net/guotianqing/article/details/113782104

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有