using TimeIterPair =
std::pair<std::chrono::high_resolution_clock::duration, unsigned int>;
+using BenchmarkFun = std::function<detail::TimeIterPair(unsigned int)>;
+
+struct BenchmarkRegistration {
+ std::string file;
+ std::string name;
+ BenchmarkFun func;
+};
+
+struct BenchmarkResult {
+ std::string file;
+ std::string name;
+ double timeInNs;
+};
/**
* Adds a benchmark wrapped in a std::function. Only used
constexpr static bool value = !folly::IsTriviallyCopyable<Decayed>::value ||
sizeof(Decayed) > sizeof(long) || std::is_pointer<Decayed>::value;
};
-} // detail namespace
+} // namespace detail
template <typename T>
auto doNotOptimizeAway(const T& datum) -> typename std::enable_if<
#endif
+struct dynamic;
+
+void benchmarkResultsToDynamic(
+ const std::vector<detail::BenchmarkResult>& data,
+ dynamic&);
+
+void benchmarkResultsFromDynamic(
+ const dynamic&,
+ std::vector<detail::BenchmarkResult>&);
+
+void printResultComparison(
+ const std::vector<detail::BenchmarkResult>& base,
+ const std::vector<detail::BenchmarkResult>& test);
+
} // namespace folly
/**