diff options
Diffstat (limited to 'src/boost/libs/timer/test/cpu_timer_info.cpp')
-rw-r--r-- | src/boost/libs/timer/test/cpu_timer_info.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/boost/libs/timer/test/cpu_timer_info.cpp b/src/boost/libs/timer/test/cpu_timer_info.cpp new file mode 100644 index 00000000..11e722c8 --- /dev/null +++ b/src/boost/libs/timer/test/cpu_timer_info.cpp @@ -0,0 +1,75 @@ +// boost cpu_timer_info.cpp ----------------------------------------------------------// + +// Copyright Beman Dawes 2011 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org/libs/timer for documentation. + +#include <boost/timer/timer.hpp> +#include <boost/chrono/chrono.hpp> +#include <boost/detail/lightweight_main.hpp> +#include <cstdlib> // for atol() +#include <iostream> +#include <locale> + +using boost::timer::nanosecond_type; +using boost::timer::cpu_times; +using boost::timer::cpu_timer; +using boost::timer::auto_cpu_timer; +using std::cout; using std::endl; + +int cpp_main( int argc, char * argv[] ) +{ + cout << '\n'; + cout << "For cpu_times.wall, the underlying clock " + << (boost::chrono::high_resolution_clock::is_steady + ? "is steady. " + : "is not steady. " + ) + << "Steady clocks are defined by C++11 as clocks for which values " + "of time_point never decrease as physical time advances and for " + "which values of time_point advance at a steady rate relative to " + "real time. That is, the clock may not be adjusted.\n\n"; + + cpu_times start_time; + start_time.clear(); + cpu_times current_time; + + { + cpu_timer cpu; + cout << "measure boost::timer::cpu_timer resolution for user time..." + << endl; + for (int i = 0; i < 3; ++i) + { + cpu.start(); + start_time = cpu.elapsed(); + current_time.user = start_time.user; + while (current_time.user == start_time.user) + { + current_time = cpu.elapsed(); + } + cout << current_time.user - start_time.user << "ns\n"; + } + } + + { + cpu_timer cpu; + cout << "measure boost::timer::cpu_timer resolution for wall-clock time..." + << endl; + for (int i = 0; i < 100; ++i) + { + cpu.start(); + start_time.wall = cpu.elapsed().wall; + current_time.wall = start_time.wall; + while (current_time.wall == start_time.wall) + { + current_time.wall = cpu.elapsed().wall; + } + cout << current_time.wall - start_time.wall << "ns "; + } + } + return 0; +} + |