1// await_keystroke.cpp -----------------------------------------------------//
2
3// Copyright Beman Dawes 2008
4
5// Distributed under the Boost Software License, Version 1.0.
6// See http://www.boost.org/LICENSE_1_0.txt
7
8#define _CRT_SECURE_NO_WARNINGS
9
10#include <boost/chrono/chrono.hpp>
11#include <iostream>
12#include <iomanip>
13
14using namespace boost::chrono;
15
16template< class Clock >
17class timer
18{
19 typename Clock::time_point start;
20public:
21
22 timer() : start( Clock::now() ) {}
23
24 typename Clock::duration elapsed() const
25 {
26 return Clock::now() - start;
27 }
28
29 double seconds() const
30 {
31 return elapsed().count() * ((double)Clock::period::num/Clock::period::den);
32 }
33};
34
35int main()
36{
37 timer<system_clock> t1;
38 timer<steady_clock> t2;
39 timer<high_resolution_clock> t3;
40
41 std::cout << "Strike any key: ";
42 std::cin.get();
43
44 std::cout << std::fixed << std::setprecision(9);
45 std::cout << "system_clock-----------: "
46 << t1.seconds() << " seconds\n";
47 std::cout << "steady_clock--------: "
48 << t2.seconds() << " seconds\n";
49 std::cout << "high_resolution_clock--: "
50 << t3.seconds() << " seconds\n";
51
52 system_clock::time_point d4 = system_clock::now();
53 system_clock::time_point d5 = system_clock::now();
54
55 std::cout << "\nsystem_clock latency-----------: " << (d5 - d4).count() << std::endl;
56
57 steady_clock::time_point d6 = steady_clock::now();
58 steady_clock::time_point d7 = steady_clock::now();
59
60 std::cout << "steady_clock latency--------: " << (d7 - d6).count() << std::endl;
61
62 high_resolution_clock::time_point d8 = high_resolution_clock::now();
63 high_resolution_clock::time_point d9 = high_resolution_clock::now();
64
65 std::cout << "high_resolution_clock latency--: " << (d9 - d8).count() << std::endl;
66
67 std::time_t now = system_clock::to_time_t(t: system_clock::now());
68
69 std::cout << "\nsystem_clock::now() reports UTC is "
70 << std::asctime(tp: std::gmtime(timer: &now)) << "\n";
71
72 return 0;
73}
74

source code of boost/libs/chrono/example/await_keystroke.cpp