user_counters_tabular_test.cc revision 3347a20e0e7aff733371cdc2ec371ea73bfdcecb
1c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 2c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes#undef NDEBUG 3c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 4c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes#include "benchmark/benchmark.h" 5c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes#include "output_test.h" 6c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 7020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// @todo: <jpmag> this checks the full output at once; the rule for 8020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// CounterSet1 was failing because it was not matching "^[-]+$". 9020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// @todo: <jpmag> check that the counters are vertically aligned. 10020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_ConsoleOut, { 11020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// keeping these lines long improves readability, so: 12020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// clang-format off 13020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 14020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Bat %s Baz %s Foo %s Frob %s Lob$", MR_Next}, 15020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 16020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 17020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 18020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 19020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 20020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 21020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, 22020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, 23020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, 24020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, 25020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, 26020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 27020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Baz %s Foo$", MR_Next}, 28020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 29020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 30020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 31020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 32020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 33020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 34020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 35020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 36020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 37020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 38020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 39020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 40020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^Benchmark %s Time %s CPU %s Iterations %s Bat %s Baz %s Foo$", MR_Next}, 41020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^[-]+$", MR_Next}, 42020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 43020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 44020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 45020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, 46020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$"}, 47020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// clang-format on 48020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes}); 49020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"%csv_header," 50020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes "\"Bar\",\"Bat\",\"Baz\",\"Foo\",\"Frob\",\"Lob\""}}); 51c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 52c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// ========================================================================= // 53c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// ------------------------- Tabular Counters Output ----------------------- // 54c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// ========================================================================= // 55c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 56c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaesvoid BM_Counters_Tabular(benchmark::State& state) { 57c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes while (state.KeepRunning()) { 58c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes } 59020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes namespace bm = benchmark; 60c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes state.counters.insert({ 61020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Foo", { 1, bm::Counter::kAvgThreads}}, 62020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bar", { 2, bm::Counter::kAvgThreads}}, 63020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Baz", { 4, bm::Counter::kAvgThreads}}, 64020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bat", { 8, bm::Counter::kAvgThreads}}, 65020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Frob", {16, bm::Counter::kAvgThreads}}, 66020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Lob", {32, bm::Counter::kAvgThreads}}, 67c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes }); 68c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes} 69020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesBENCHMARK(BM_Counters_Tabular)->ThreadRange(1, 16); 70020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_JSONOut, {{"\"name\": \"BM_Counters_Tabular/threads:%int\",$"}, 713347a20e0e7aff733371cdc2ec371ea73bfdcecbRoman Lebedev {"\"iterations\": %int,$", MR_Next}, 72b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"real_time\": %float,$", MR_Next}, 73b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"cpu_time\": %float,$", MR_Next}, 74c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"time_unit\": \"ns\",$", MR_Next}, 75c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Bar\": %float,$", MR_Next}, 76c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Bat\": %float,$", MR_Next}, 77c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Baz\": %float,$", MR_Next}, 78c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Foo\": %float,$", MR_Next}, 79c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Frob\": %float,$", MR_Next}, 80c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"\"Lob\": %float$", MR_Next}, 81c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes {"}", MR_Next}}); 82020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"^\"BM_Counters_Tabular/threads:%int\",%csv_report," 83c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes "%float,%float,%float,%float,%float,%float$"}}); 84c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// VS2013 does not allow this function to be passed as a lambda argument 85c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// to CHECK_BENCHMARK_RESULTS() 86c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaesvoid CheckTabular(Results const& e) { 87c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 1); 88c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 2); 89c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 4); 90c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Bat", EQ, 8); 91c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Frob", EQ, 16); 92c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Lob", EQ, 32); 93c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes} 94020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesCHECK_BENCHMARK_RESULTS("BM_Counters_Tabular/threads:%int", &CheckTabular); 95c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 96c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// ========================================================================= // 97cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes// -------------------- Tabular+Rate Counters Output ----------------------- // 98cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes// ========================================================================= // 99cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes 100cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaesvoid BM_CounterRates_Tabular(benchmark::State& state) { 101cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes while (state.KeepRunning()) { 102cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes } 103cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes namespace bm = benchmark; 104cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes state.counters.insert({ 105020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Foo", { 1, bm::Counter::kAvgThreadsRate}}, 106020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bar", { 2, bm::Counter::kAvgThreadsRate}}, 107020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Baz", { 4, bm::Counter::kAvgThreadsRate}}, 108020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bat", { 8, bm::Counter::kAvgThreadsRate}}, 109020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Frob", {16, bm::Counter::kAvgThreadsRate}}, 110020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Lob", {32, bm::Counter::kAvgThreadsRate}}, 111cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes }); 112cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes} 113020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesBENCHMARK(BM_CounterRates_Tabular)->ThreadRange(1, 16); 114020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterRates_Tabular/threads:%int\",$"}, 1153347a20e0e7aff733371cdc2ec371ea73bfdcecbRoman Lebedev {"\"iterations\": %int,$", MR_Next}, 116b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"real_time\": %float,$", MR_Next}, 117b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"cpu_time\": %float,$", MR_Next}, 118cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"time_unit\": \"ns\",$", MR_Next}, 119cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Bar\": %float,$", MR_Next}, 120cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Bat\": %float,$", MR_Next}, 121cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Baz\": %float,$", MR_Next}, 122cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Foo\": %float,$", MR_Next}, 123cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Frob\": %float,$", MR_Next}, 124cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"\"Lob\": %float$", MR_Next}, 125cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes {"}", MR_Next}}); 126020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"^\"BM_CounterRates_Tabular/threads:%int\",%csv_report," 127cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes "%float,%float,%float,%float,%float,%float$"}}); 128cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes// VS2013 does not allow this function to be passed as a lambda argument 129cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes// to CHECK_BENCHMARK_RESULTS() 130cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaesvoid CheckTabularRate(Results const& e) { 131cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes double t = e.DurationCPUTime(); 132cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Foo", EQ, 1./t, 0.001); 133cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Bar", EQ, 2./t, 0.001); 134cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Baz", EQ, 4./t, 0.001); 135cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Bat", EQ, 8./t, 0.001); 136cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Frob", EQ, 16./t, 0.001); 137cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes CHECK_FLOAT_COUNTER_VALUE(e, "Lob", EQ, 32./t, 0.001); 138cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes} 139020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesCHECK_BENCHMARK_RESULTS("BM_CounterRates_Tabular/threads:%int", 140020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes &CheckTabularRate); 141cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes 142cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes// ========================================================================= // 14325060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// ------------------------- Tabular Counters Output ----------------------- // 144c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes// ========================================================================= // 145c69b385c9ce92ce4b05c3109cfdb8086d75600d6Joao Paulo Magalhaes 14625060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// set only some of the counters 147020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid BM_CounterSet0_Tabular(benchmark::State& state) { 14825060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes while (state.KeepRunning()) { 14925060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes } 150020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes namespace bm = benchmark; 15125060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes state.counters.insert({ 152020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Foo", {10, bm::Counter::kAvgThreads}}, 153020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bar", {20, bm::Counter::kAvgThreads}}, 154020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Baz", {40, bm::Counter::kAvgThreads}}, 15525060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes }); 156cf20dc967f2cf5307ca6e4bc06a36490c1b5c835Joao Paulo Magalhaes} 157020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesBENCHMARK(BM_CounterSet0_Tabular)->ThreadRange(1, 16); 158020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet0_Tabular/threads:%int\",$"}, 1593347a20e0e7aff733371cdc2ec371ea73bfdcecbRoman Lebedev {"\"iterations\": %int,$", MR_Next}, 160b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"real_time\": %float,$", MR_Next}, 161b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"cpu_time\": %float,$", MR_Next}, 16225060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes {"\"time_unit\": \"ns\",$", MR_Next}, 16325060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes {"\"Bar\": %float,$", MR_Next}, 16425060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes {"\"Baz\": %float,$", MR_Next}, 16525060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes {"\"Foo\": %float$", MR_Next}, 16625060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes {"}", MR_Next}}); 167020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet0_Tabular/threads:%int\",%csv_report," 16825060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes "%float,,%float,%float,,"}}); 16925060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// VS2013 does not allow this function to be passed as a lambda argument 17025060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// to CHECK_BENCHMARK_RESULTS() 171020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid CheckSet0(Results const& e) { 17225060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 10); 17325060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 20); 17425060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 40); 17525060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes} 176020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesCHECK_BENCHMARK_RESULTS("BM_CounterSet0_Tabular", &CheckSet0); 177020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes 178020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// again. 179020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid BM_CounterSet1_Tabular(benchmark::State& state) { 180020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes while (state.KeepRunning()) { 181020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes } 182020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes namespace bm = benchmark; 183020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes state.counters.insert({ 184020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Foo", {15, bm::Counter::kAvgThreads}}, 185020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bar", {25, bm::Counter::kAvgThreads}}, 186020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Baz", {45, bm::Counter::kAvgThreads}}, 187020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes }); 188020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes} 189020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesBENCHMARK(BM_CounterSet1_Tabular)->ThreadRange(1, 16); 190020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet1_Tabular/threads:%int\",$"}, 1913347a20e0e7aff733371cdc2ec371ea73bfdcecbRoman Lebedev {"\"iterations\": %int,$", MR_Next}, 192b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"real_time\": %float,$", MR_Next}, 193b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"cpu_time\": %float,$", MR_Next}, 194020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"time_unit\": \"ns\",$", MR_Next}, 195020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Bar\": %float,$", MR_Next}, 196020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Baz\": %float,$", MR_Next}, 197020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Foo\": %float$", MR_Next}, 198020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"}", MR_Next}}); 199020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet1_Tabular/threads:%int\",%csv_report," 200020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes "%float,,%float,%float,,"}}); 201020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// VS2013 does not allow this function to be passed as a lambda argument 202020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// to CHECK_BENCHMARK_RESULTS() 203020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid CheckSet1(Results const& e) { 204020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 15); 205020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 25); 206020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 45); 207020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes} 208020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesCHECK_BENCHMARK_RESULTS("BM_CounterSet1_Tabular/threads:%int", &CheckSet1); 209020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes 210020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// ========================================================================= // 211020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// ------------------------- Tabular Counters Output ----------------------- // 212020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// ========================================================================= // 213020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes 214020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// set only some of the counters, different set now. 215020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid BM_CounterSet2_Tabular(benchmark::State& state) { 216020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes while (state.KeepRunning()) { 217020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes } 218020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes namespace bm = benchmark; 219020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes state.counters.insert({ 220020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Foo", {10, bm::Counter::kAvgThreads}}, 221020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Bat", {30, bm::Counter::kAvgThreads}}, 222020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"Baz", {40, bm::Counter::kAvgThreads}}, 223020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes }); 224020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes} 225020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesBENCHMARK(BM_CounterSet2_Tabular)->ThreadRange(1, 16); 226020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet2_Tabular/threads:%int\",$"}, 2273347a20e0e7aff733371cdc2ec371ea73bfdcecbRoman Lebedev {"\"iterations\": %int,$", MR_Next}, 228b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"real_time\": %float,$", MR_Next}, 229b9be142d1e2dbc06cf2efd44919f6c422c43cddbRoman Lebedev {"\"cpu_time\": %float,$", MR_Next}, 230020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"time_unit\": \"ns\",$", MR_Next}, 231020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Bat\": %float,$", MR_Next}, 232020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Baz\": %float,$", MR_Next}, 233020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"\"Foo\": %float$", MR_Next}, 234020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes {"}", MR_Next}}); 235020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet2_Tabular/threads:%int\",%csv_report," 236020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes ",%float,%float,%float,,"}}); 237020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// VS2013 does not allow this function to be passed as a lambda argument 238020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes// to CHECK_BENCHMARK_RESULTS() 239020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaesvoid CheckSet2(Results const& e) { 240020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 10); 241020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Bat", EQ, 30); 242020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 40); 243020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo Magalhaes} 244020bac985b93308750b90cca6921b7425ca57b3dJoao Paulo MagalhaesCHECK_BENCHMARK_RESULTS("BM_CounterSet2_Tabular", &CheckSet2); 24525060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes 24625060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// ========================================================================= // 24725060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// --------------------------- TEST CASES END ------------------------------ // 24825060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes// ========================================================================= // 24925060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaes 25025060449020a5f1e739064fc155ca7c4c94935a1Joao Paulo Magalhaesint main(int argc, char* argv[]) { RunOutputTests(argc, argv); } 251