await_keystroke.cpp 1.9 KB

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