亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長

 更新時(shí)間:2024年12月16日 08:44:13   作者:訫悅  
這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下

一、便于使用,使用chrono封裝一個(gè)簡單的類

#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;
 
    //獲取當(dāng)前時(shí)間戳 類型: s/ms/us/ns
    template<typename T = CElapsedTime::ms> static long long since_epoch() {
        const auto now = std::chrono::system_clock::now();//時(shí)間戳要用 system_clock
        const auto sinceEpoch = std::chrono::duration_cast<T>(now.time_since_epoch());
        return sinceEpoch.count();
    }
 
    //計(jì)算時(shí)間差  類型: 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;
    //計(jì)算時(shí)間差  返回浮點(diǎn)類型
    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();
    }
};

二、直接調(diào)用

#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));//運(yùn)行時(shí)長
    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;
}

運(yùn)行結(jié)果:

到此這篇關(guān)于C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長的文章就介紹到這了,更多相關(guān)C++獲取時(shí)間戳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論