C++11 std::chrono库详解(一个time library)
详解一部分源自:https://www.cnblogs.com/jwk000/p/3560086.html
这里的代码示例:
#include <iostream> #include <chrono> #include <ctime> #include <ratio> using namespace std; int tickTest() { using namespace std::chrono; steady_clock::time_point t1 = steady_clock::now(); std::cout << "printing out 1000 stars...\n"; for (int i=0; i<1000; ++i) std::cout << "*"; std::cout << std::endl; steady_clock::time_point t2 = steady_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); std::cout << "It took me " << time_span.count() << " seconds."; std::cout << std::endl; return 0; } int main() { cout << "Hello time world!" << endl; using namespace std::chrono; system_clock::time_point tp_epoch; // epoch value time_point <system_clock,duration<int>> tp_seconds (duration<int>(1)); system_clock::time_point tp (tp_seconds); // std::cout << "1 second since system_clock epoch = "; std::cout << tp.time_since_epoch().count(); std::cout << " system_clock periods." << std::endl; // display time_point: std::time_t tt_0 = system_clock::to_time_t(tp); std::cout << "time_point tp is: " << ctime(&tt_0); // std::chrono::duration<int,std::ratio<60*60*24> > one_day (1); system_clock::time_point today = system_clock::now(); system_clock::time_point tomorrow = today + one_day; // std::time_t tt; tt = system_clock::to_time_t ( today ); std::cout << "today is: " << ctime(&tt); tt = system_clock::to_time_t ( tomorrow ); std::cout << "tomorrow will be: " << ctime(&tt); std::cout << "------------tickTest()---------------" << std::endl; tickTest(); return 0; }
比较时间获取的精度:(关于 QueryPerformanceFrequency用法 )
#include <iostream> #include <chrono> #include <ctime> #include <ratio> #include <windows.h> using namespace std; int tickTest() { using namespace std::chrono; steady_clock::time_point t1 = steady_clock::now(); std::cout << "printing out 1000 stars...\n"; for (int i=0; i<1000; ++i) std::cout << "*"; std::cout << std::endl; steady_clock::time_point t2 = steady_clock::now(); duration<double> time_span = duration_cast<duration<double>>(t2 - t1); std::cout << "It took me " << time_span.count() << " seconds."; std::cout << std::endl; return 0; } int main() { cout << "Hello time world!" << endl; using namespace std::chrono; system_clock::time_point tp_epoch; // epoch value time_point <system_clock,duration<int>> tp_seconds (duration<int>(1)); system_clock::time_point tp (tp_seconds); // std::cout << "1 second since system_clock epoch = "; std::cout << tp.time_since_epoch().count(); std::cout << " system_clock periods." << std::endl; // display time_point: std::time_t tt_0 = system_clock::to_time_t(tp); std::cout << "time_point tp is: " << ctime(&tt_0); // std::chrono::duration<int,std::ratio<60*60*24> > one_day (1); system_clock::time_point today = system_clock::now(); system_clock::time_point tomorrow = today + one_day; // std::time_t tt; tt = system_clock::to_time_t ( today ); std::cout << "today is: " << ctime(&tt); tt = system_clock::to_time_t ( tomorrow ); std::cout << "tomorrow will be: " << ctime(&tt); std::cout << "------------tickTest()---------------" << std::endl; LARGE_INTEGER nFreq; LARGE_INTEGER nBeginTime; LARGE_INTEGER nEndTime; double time; QueryPerformanceFrequency(&nFreq); QueryPerformanceCounter(&nBeginTime); //Sleep(1000); tickTest(); QueryPerformanceCounter(&nEndTime); // 计算精确时间 time=(double)(nEndTime.QuadPart-nBeginTime.QuadPart)/(double)nFreq.QuadPart; std::cout << "----time: " <<time<< std::endl; //Sleep(1000); return 0; } //

浙公网安备 33010602011771号