C++實現(xiàn)獲取時間戳和計算運行時長
一、便于使用,使用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; //獲取當(dāng)前時間戳 類型: 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(); } };
二、直接調(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));//運行時長 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; }
運行結(jié)果:
到此這篇關(guān)于C++實現(xiàn)獲取時間戳和計算運行時長的文章就介紹到這了,更多相關(guān)C++獲取時間戳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)二叉樹堆
這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)二叉樹堆的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05C++ 靜態(tài)成員的類內(nèi)初始化詳解及實例代碼
這篇文章主要介紹了C++ 靜態(tài)成員的類內(nèi)初始化詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組翻轉(zhuǎn)的實現(xiàn)方法
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組翻轉(zhuǎn)的實現(xiàn)方法的相關(guān)資料,這里用幾種實現(xiàn)方法來實現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10數(shù)據(jù)結(jié)構(gòu)之堆的具體使用
本文主要介紹了數(shù)據(jù)結(jié)構(gòu)之堆的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02C++編程中使用設(shè)計模式中的policy策略模式的實例講解
這篇文章主要介紹了C++編程中使用設(shè)計模式中的policy策略模式的實例講解,文章最后對策略模式的優(yōu)缺點有一個簡單的總結(jié),需要的朋友可以參考下2016-03-03MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法
這篇文章主要介紹了MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法,需要的朋友可以參考下2014-07-07