From 488df10580fdb2af78a65df12595ea3e5de9404c Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Wed, 20 Jan 2021 20:32:14 +0100 Subject: Update picobench. --- benchmarks/cmap_benchmark2.cpp | 19 ++++++++++++------- benchmarks/picobench.hpp | 30 ++++++++++++++---------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/benchmarks/cmap_benchmark2.cpp b/benchmarks/cmap_benchmark2.cpp index 3eaff7a2..33f5c675 100644 --- a/benchmarks/cmap_benchmark2.cpp +++ b/benchmarks/cmap_benchmark2.cpp @@ -12,8 +12,7 @@ #define PICOBENCH_IMPLEMENT_WITH_MAIN #include "picobench.hpp" -PICOBENCH_SUITE("Map"); -enum {N1 = 10000000, S1 = 1, MaxLoadFactor100 = 80}; +enum {N1 = 4000000, S1 = 1, MaxLoadFactor100 = 80}; uint64_t seed = time(NULL); static inline uint32_t hash32(const void* data, size_t len) { @@ -45,6 +44,8 @@ using_cmap(i, int, int, c_default_equals, hash32); using_cmap(x, uint64_t, uint64_t, c_default_equals, hash64); using_cmap_strkey(s, cstr, cstr_del, cstr_clone); +PICOBENCH_SUITE("Map1"); + template static void ctor_and_ins_one_i(picobench::state& s) { @@ -74,7 +75,7 @@ static void ctor_and_ins_one_cmap_i(picobench::state& s) } #define P samples(S1).iterations({N1}) -PICOBENCH(ctor_and_ins_one_i).P.baseline(); +PICOBENCH(ctor_and_ins_one_i).P; PICOBENCH(ctor_and_ins_one_i).P; PICOBENCH(ctor_and_ins_one_i).P; PICOBENCH(ctor_and_ins_one_i).P; @@ -83,6 +84,7 @@ PICOBENCH(ctor_and_ins_one_i).P; PICOBENCH(ctor_and_ins_one_cmap_i).P; #undef P +PICOBENCH_SUITE("Map2"); template static void ins_and_erase_i(picobench::state& s) @@ -126,7 +128,7 @@ static void ins_and_erase_cmap_i(picobench::state& s) } #define P samples(S1).iterations({N1/4}) -PICOBENCH(ins_and_erase_i).P.baseline(); +PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; @@ -135,6 +137,7 @@ PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_cmap_i).P; #undef P +PICOBENCH_SUITE("Map3"); template static void ins_and_access_i(picobench::state& s) @@ -167,7 +170,7 @@ static void ins_and_access_cmap_i(picobench::state& s) } #define P samples(S1).iterations({N1, N1, N1, N1}).args({18, 23, 25, 31}) -PICOBENCH(ins_and_access_i).P.baseline(); +PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; @@ -176,6 +179,7 @@ PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_cmap_i).P; #undef P +PICOBENCH_SUITE("Map4"); static void randomize(char* str, size_t len) { union {uint64_t i; char c[8];} r = {.i = stc64_random()}; @@ -231,7 +235,7 @@ static void ins_and_access_cmap_s(picobench::state& s) } #define P samples(S1).iterations({N1/5, N1/5, N1/5, N1/10, N1/40}).args({13, 7, 8, 100, 1000}) -PICOBENCH(ins_and_access_s).P.baseline(); +PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; @@ -240,6 +244,7 @@ PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_cmap_s).P; #undef P +PICOBENCH_SUITE("Map5"); template static void iterate_x(picobench::state& s) @@ -303,7 +308,7 @@ static void iterate_cmap_x(picobench::state& s) #define P samples(S1).iterations({N1/20}).args({12}) -PICOBENCH(iterate_x).P.baseline(); +PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; diff --git a/benchmarks/picobench.hpp b/benchmarks/picobench.hpp index 271a4412..7c8b55b7 100644 --- a/benchmarks/picobench.hpp +++ b/benchmarks/picobench.hpp @@ -28,7 +28,7 @@ // // VERSION HISTORY // -// 2.xx (2021-01-19) * Added user data per iter, changed text output. +// 2.x1 (2021-01-19) * Added user data per iter, changed text output. // 2.01 (2019-03-03) * Fixed android build when binding to a signle core // 2.00 (2018-10-30) * Breaking change! runner::run_benchmarks doesn't return // a report anymore. The report is generated by @@ -113,8 +113,8 @@ # include #endif -#define PICOBENCH_VERSION 2.01 -#define PICOBENCH_VERSION_STR "2.01" +#define PICOBENCH_VERSION 2.x1 +#define PICOBENCH_VERSION_STR "2.x1" #if defined(PICOBENCH_DEBUG) # include @@ -165,8 +165,8 @@ public: size_t iterations() const { return _iterations; } - int64_t duration_ns() const { return _duration_ns; } - void add_custom_duration(int64_t duration_ns) { _duration_ns += duration_ns; } + uint64_t duration_ns() const { return _duration_ns; } + void add_custom_duration(uint64_t duration_ns) { _duration_ns += duration_ns; } udata_t user_data() const { return _user_data; } udata_t arg() const { return _arg; } @@ -251,7 +251,7 @@ public: private: high_res_clock::time_point _start; - int64_t _duration_ns = 0; + uint64_t _duration_ns = 0; udata_t _user_data; udata_t _arg; size_t _iterations; @@ -386,7 +386,7 @@ public: udata_t user_data; udata_t arg; int samples; // number of samples taken - int64_t total_time_ns; // fastest sample!!! + uint64_t total_time_ns; // fastest sample!!! result_t result; // result of fastest sample }; struct benchmark @@ -653,7 +653,7 @@ public: bool is_baseline; udata_t user_data; udata_t arg; - int64_t total_time_ns; // fastest sample!!! + uint64_t total_time_ns; // fastest sample!!! result_t result; // result of fastest sample }; using problem_space_view_map = std::map, @@ -970,8 +970,6 @@ public: { auto i = benchmarks.begin() + long(rnd() % benchmarks.size()); auto& b = *i; - //std::cerr << "run: " << b->_name << ": " << b->_istate->iterations() - // << " (" << b->_istate->arg() << ")\n"; std::cerr << '.'; b->_proc(*b->_istate); @@ -1147,8 +1145,8 @@ public: _opts.emplace_back("-output=", "", "Sets output filename or `stdout`", &runner::cmd_output); - _opts.emplace_back("-compare-results", "", - "Compare benchmark results", + _opts.emplace_back("-no-compare-results", "", + "Doesn't compare benchmark results", &runner::cmd_compare_results); _opts.emplace_back("-no-run", "", "Doesn't run benchmarks", @@ -1239,8 +1237,8 @@ private: mutable error_t _error = no_error; bool _should_run = true; - bool _compare_results_across_samples = false; - bool _compare_results_across_benchmarks = false; + bool _compare_results_across_samples = true; + bool _compare_results_across_benchmarks = true; report_output_format _output_format = report_output_format::all; const char* _output_file = nullptr; // nullptr means stdout @@ -1384,8 +1382,8 @@ private: bool cmd_compare_results(const char* line) { if (*line) return false; - _compare_results_across_samples = true; - _compare_results_across_benchmarks = true; + _compare_results_across_samples = false; + _compare_results_across_benchmarks = false; return true; } }; -- cgit v1.2.3