// Copyright Oliver Kowalke 2009. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef ZEIT_H #define ZEIT_H #include #include #include #include #include #include #include #include typedef boost::uint64_t zeit_t; inline zeit_t zeit() { timespec t; ::clock_gettime( CLOCK_PROCESS_CPUTIME_ID, & t); return t.tv_sec * 1000000000 + t.tv_nsec; } struct measure_zeit { zeit_t operator()() { zeit_t start( zeit() ); return zeit() - start; } }; inline zeit_t overhead_zeit() { std::size_t iterations( 10); std::vector< zeit_t > overhead( iterations, 0); for ( std::size_t i( 0); i < iterations; ++i) std::generate( overhead.begin(), overhead.end(), measure_zeit() ); BOOST_ASSERT( overhead.begin() != overhead.end() ); return std::accumulate( overhead.begin(), overhead.end(), 0) / iterations; } #endif // ZEIT_H