Use std::chrono instead of boost::chrono in benchmarks.

This reduces the external dependencies and fixes a bug where a duration was
reported in microseconds instead of milliseconds on some systems.
This commit is contained in:
Jochen Topf 2014-10-01 11:38:08 +02:00
parent d09765ad08
commit 0aec5003b3

View file

@ -5,17 +5,14 @@
#include <mapnik/params.hpp> #include <mapnik/params.hpp>
#include <mapnik/value_types.hpp> #include <mapnik/value_types.hpp>
// boost
#define BOOST_CHRONO_HEADER_ONLY
#include <boost/chrono/process_cpu_clocks.hpp>
#include <boost/chrono.hpp>
// stl // stl
#include <chrono>
#include <iomanip>
#include <iostream> #include <iostream>
#include <set>
#include <sstream>
#include <thread> #include <thread>
#include <vector> #include <vector>
#include <set>
#include <iomanip>
namespace benchmark { namespace benchmark {
@ -88,8 +85,8 @@ int run(T const& test_runner, std::string const& name)
std::clog << "test did not validate: " << name << "\n"; std::clog << "test did not validate: " << name << "\n";
return -1; return -1;
} }
boost::chrono::process_cpu_clock::time_point start; std::chrono::high_resolution_clock::time_point start;
boost::chrono::process_cpu_clock::duration elapsed; std::chrono::high_resolution_clock::duration elapsed;
std::stringstream s; std::stringstream s;
s << name << ":" s << name << ":"
<< std::setw(45 - (int)s.tellp()) << std::right << std::setw(45 - (int)s.tellp()) << std::right
@ -104,18 +101,18 @@ int run(T const& test_runner, std::string const& name)
{ {
tg.emplace_back(new std::thread(test_runner)); tg.emplace_back(new std::thread(test_runner));
} }
start = boost::chrono::process_cpu_clock::now(); start = std::chrono::high_resolution_clock::now();
std::for_each(tg.begin(), tg.end(), [](value_type & t) {if (t->joinable()) t->join();}); std::for_each(tg.begin(), tg.end(), [](value_type & t) {if (t->joinable()) t->join();});
elapsed = boost::chrono::process_cpu_clock::now() - start; elapsed = std::chrono::high_resolution_clock::now() - start;
} }
else else
{ {
start = boost::chrono::process_cpu_clock::now(); start = std::chrono::high_resolution_clock::now();
test_runner(); test_runner();
elapsed = boost::chrono::process_cpu_clock::now() - start; elapsed = std::chrono::high_resolution_clock::now() - start;
} }
s << std::setw(65 - (int)s.tellp()) << std::right s << std::setw(65 - (int)s.tellp()) << std::right
<< boost::chrono::duration_cast<boost::chrono::milliseconds>(elapsed) << "\n"; << std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() << " milliseconds\n";
std::clog << s.str(); std::clog << s.str();
return 0; return 0;
} }