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;
}
//

 

posted @ 2018-02-11 07:49  vily_雷  阅读(761)  评论(0)    收藏  举报