#include "Benchmark.h"
#include "Foreach.h"
+#include "json.h"
#include "String.h"
#include <algorithm>
#include <cmath>
using namespace std;
DEFINE_bool(benchmark, false, "Run benchmarks.");
+DEFINE_bool(json, false, "Output in JSON format.");
namespace folly {
return stringPrintf("%*.*f%c", decimals + 3 + 1, decimals, n, suffix);
}
-static void printBenchmarkResults(
+static void printBenchmarkResultsAsTable(
const vector<tuple<const char*, const char*, double> >& data) {
// Width available
static const uint columns = 76;
separator('=');
}
+static void printBenchmarkResultsAsJson(
+ const vector<tuple<const char*, const char*, double> >& data) {
+ dynamic d = dynamic::object;
+ for (auto& datum: data) {
+ d[std::get<1>(datum)] = std::get<2>(datum) * 1000.;
+ }
+
+ printf("%s\n", toPrettyJson(d).c_str());
+}
+
+static void printBenchmarkResults(
+ const vector<tuple<const char*, const char*, double> >& data) {
+
+ if (FLAGS_json) {
+ printBenchmarkResultsAsJson(data);
+ } else {
+ printBenchmarkResultsAsTable(data);
+ }
+}
+
void runBenchmarks() {
CHECK(!benchmarks.empty());