C++实现获取时间戳和计算运行时长

 更新时间:2024年12月16日 08:44:13   作者:訫悦  
这篇文章主要为大家详细介绍了如何使用C++实现获取时间戳和计算运行时长功能,文中的示例代码讲解详细,有需要的小伙伴可以参考一下

一、便于使用,使用chrono封装一个简单的类

#pragma once
 
#include <chrono>
 
using CTime_point = std::chrono::high_resolution_clock::time_point;
 
class CElapsedTime final
{
public:
    static CTime_point now() {
        return std::chrono::high_resolution_clock::now();
    }
 
    using s  = std::chrono::seconds;
    using ms = std::chrono::milliseconds;
    using us = std::chrono::microseconds;
    using ns = std::chrono::nanoseconds;
 
    //获取当前时间戳 类型: s/ms/us/ns
    template<typename T = CElapsedTime::ms> static long long since_epoch() {
        const auto now = std::chrono::system_clock::now();//时间戳要用 system_clock
        const auto sinceEpoch = std::chrono::duration_cast<T>(now.time_since_epoch());
        return sinceEpoch.count();
    }
 
    //计算时间差  类型: s/ms/us/ns
    template<typename T = CElapsedTime::ms>
    static long long duration(const CTime_point &begin, const CTime_point &end)
    {
        const auto delta = std::chrono::duration_cast<T>(end - begin);
        return delta.count();
    }
 
    const static long long _s  = 1;
    const static long long _ms = 1000;
    const static long long _us = 1000000;
    const static long long _ns = 1000000000;
    //计算时间差  返回浮点类型
    template<size_t T = CElapsedTime::_ms>
    static double duration(const CTime_point &begin, const CTime_point &end)
    {
        const std::chrono::duration<double, std::ratio<1, T>> delta = end - begin;
        return delta.count();
    }
};

二、直接调用

#include <stdlib.h>
#include <thread>
#include <iostream>
#include <iomanip>
#include "CElapsedTime.h"
 
int main(int argc, char *argv[])
{
#ifdef _WIN32
   _tzset();
   _putenv("_tz=GMT +8");
#else
    setenv("TZ", "Asia/Shanghai", 1);
#endif
 
    auto begin = CElapsedTime::now();
    std::this_thread::sleep_for(std::chrono::milliseconds(1230));//运行时长
    auto end = CElapsedTime::now();
 
    long long sinceEpoch = CElapsedTime::since_epoch();
    std::cout << "since epoch: " << sinceEpoch  << std::endl;
 
    std::cout << "run(s):  " << CElapsedTime::duration<CElapsedTime::s>(begin, end)  << std::endl;
    std::cout << "run(ms): " << CElapsedTime::duration<CElapsedTime::ms>(begin, end) << std::endl;
    std::cout << "run(us): " << CElapsedTime::duration<CElapsedTime::us>(begin, end) << std::endl;
    std::cout << "run(ns): " << CElapsedTime::duration<CElapsedTime::ns>(begin, end) << std::endl;
 
    std::cout << "run(s):  " << std::fixed << std::setprecision(3) << CElapsedTime::duration<CElapsedTime::_s>(begin, end)  << std::endl;
    std::cout << "run(ms): " << std::fixed << std::setprecision(3) << CElapsedTime::duration<CElapsedTime::_ms>(begin, end) << std::endl;
    std::cout << "run(us): " << std::fixed << std::setprecision(3) << CElapsedTime::duration<CElapsedTime::_us>(begin, end) << std::endl;
    std::cout << "run(ns): " << std::fixed << std::setprecision(3) << CElapsedTime::duration<CElapsedTime::_ns>(begin, end) << std::endl;
 
    return 0;
}

运行结果:

到此这篇关于C++实现获取时间戳和计算运行时长的文章就介绍到这了,更多相关C++获取时间戳内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言完全平方整数的判断

    C语言完全平方整数的判断

    大家好,本篇文章主要讲的是C语言完全平方整数的判断,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C++ 变量的声明和初始化方式示例详解

    C++ 变量的声明和初始化方式示例详解

    在 C++ 中,直接初始化和复制初始化之间有一些微妙的区别,通常,直接初始化更加高效并且可以用于更多的情况,因为它在声明的同时就执行了初始化操作,这篇文章主要介绍了C++ 变量的声明和初始化方式示例,需要的朋友可以参考下
    2024-06-06
  • c++项目构成从cmake使用基础详解

    c++项目构成从cmake使用基础详解

    这篇文章主要为大家介绍了c++项目构成,从cmake使用基础开始为大家讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • c++11多种格式时间转化为字符串的方法实现

    c++11多种格式时间转化为字符串的方法实现

    本文主要介绍了c++11多种格式时间转化为字符串的方法实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • c++可变参数模板使用示例源码解析

    c++可变参数模板使用示例源码解析

    这篇文章主要为大家介绍了c++可变参数模板使用示例源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • C++ 如何将Lambda转换成函数指针

    C++ 如何将Lambda转换成函数指针

    这篇文章主要介绍了C++ 如何将Lambda转换成函数指针,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言实现员工工资管理系统

    C语言实现员工工资管理系统

    这篇文章主要为大家详细介绍了C语言实现员工工资管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 简单总结C语言中各种类型的指针的概念

    简单总结C语言中各种类型的指针的概念

    这篇文章主要简单总结了C语言中各种类型的指针的概念,指针可以说是C语言本身所具有的最大特性,平时根据不同使用场合习惯地将其简单分类,需要的朋友可以参考下
    2016-03-03
  • C++数组指针和二维数组详情

    C++数组指针和二维数组详情

    这篇文章主要介绍了C++数组指针和二维数组,指针数组和二维数组在应用中常用于函数传参,下面我们就来看看指针数组和二维数组在应用中的具体使用吧,需要的朋友可以参考一下
    2021-10-10
  • C++中list的使用与模拟实现

    C++中list的使用与模拟实现

    list相较于vector来说会显得复杂,它的好处是在任意位置插入,删除都是一个O(1)的时间复杂度,下面这篇文章主要给大家介绍了关于C++中list的使用与模拟实现的相关资料,需要的朋友可以参考下
    2022-05-05

最新评论