diff --git a/include/picobench/picobench.hpp b/include/picobench/picobench.hpp index d268e11..72eca12 100644 --- a/include/picobench/picobench.hpp +++ b/include/picobench/picobench.hpp @@ -467,8 +467,9 @@ class report out.put('\n'); out << - " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n"; - out.put('\n'); + " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n"; + out << + "--------------------------|--------:|----------:|--------:|-------:|----------:\n"; auto problem_space_view = get_problem_space_view(suite); for (auto& ps : problem_space_view) @@ -485,13 +486,15 @@ class report for (auto& bm : ps.second) { + out << ' ' << bm.name; + auto pad = 24 - int(strlen(bm.name)); if (bm.is_baseline) { - out << setw(23) << bm.name << " *"; + out << " *"; + pad -= 2; } - else - { - out << setw(25) << bm.name; + for (int i = 0; i < pad; ++i) { + out.put(' '); } out << " |" @@ -551,8 +554,9 @@ class report out.put('\n'); out << - " Name (* = baseline) | ns/op | Baseline | Ops/second\n"; - out.put('\n'); + " Name (* = baseline) | ns/op | Baseline | Ops/second\n"; + out << + "--------------------------|--------:|---------:|-----------:\n"; const benchmark* baseline = nullptr; for (auto& bm : suite.benchmarks) @@ -575,13 +579,15 @@ class report for (auto& bm : suite.benchmarks) { + out << ' ' << bm.name; + auto pad = 24 - int(strlen(bm.name)); if (bm.is_baseline) { - out << setw(23) << bm.name << " *"; + out << " *"; + pad -= 2; } - else - { - out << setw(25) << bm.name; + for (int i = 0; i < pad; ++i) { + out.put(' '); } int64_t total_time = 0; diff --git a/test/basic.cpp b/test/basic.cpp index 1665d82..61ca73b 100644 --- a/test/basic.cpp +++ b/test/basic.cpp @@ -486,56 +486,56 @@ TEST_CASE("[picobench] test") sout.str(string()); report.to_text_concise(sout); - const char* concise = + std::string concise = "## test a:\n" "\n" - " Name (* = baseline) | ns/op | Baseline | Ops/second\n" - "\n" - " a_a * | 10 | - | 100000000.0\n" - " a_b | 11 | 1.100 | 90909090.9\n" - " a_c | 20 | 2.000 | 50000000.0\n" + " Name (* = baseline) | ns/op | Baseline | Ops/second\n" + "--------------------------|--------:|---------:|-----------:\n" + " a_a * | 10 | - | 100000000.0\n" + " a_b | 11 | 1.100 | 90909090.9\n" + " a_c | 20 | 2.000 | 50000000.0\n" "\n" "## test b:\n" "\n" - " Name (* = baseline) | ns/op | Baseline | Ops/second\n" - "\n" - " b_a | 75 | 0.750 | 13333333.3\n" - " something else * | 100 | - | 10000000.0\n" + " Name (* = baseline) | ns/op | Baseline | Ops/second\n" + "--------------------------|--------:|---------:|-----------:\n" + " b_a | 75 | 0.750 | 13333333.3\n" + " something else * | 100 | - | 10000000.0\n" "\n"; CHECK(sout.str() == concise); - const char* txt = + std::string txt = "## test a:\n" "\n" - " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n" - "\n" - " a_a * | 8 | 0.000 | 10 | - |100000000.0\n" - " a_b | 8 | 0.000 | 11 | 1.100 | 90909090.9\n" - " a_c | 8 | 0.000 | 20 | 2.000 | 50000000.0\n" - " a_a * | 64 | 0.001 | 10 | - |100000000.0\n" - " a_b | 64 | 0.001 | 11 | 1.100 | 90909090.9\n" - " a_c | 64 | 0.001 | 20 | 2.000 | 50000000.0\n" - " a_a * | 512 | 0.005 | 10 | - |100000000.0\n" - " a_b | 512 | 0.006 | 11 | 1.100 | 90909090.9\n" - " a_c | 512 | 0.010 | 20 | 2.000 | 50000000.0\n" - " a_a * | 4096 | 0.041 | 10 | - |100000000.0\n" - " a_b | 4096 | 0.045 | 11 | 1.100 | 90909090.9\n" - " a_c | 4096 | 0.082 | 20 | 2.000 | 50000000.0\n" - " a_a * | 8192 | 0.082 | 10 | - |100000000.0\n" - " a_b | 8192 | 0.090 | 11 | 1.100 | 90909090.9\n" - " a_c | 8192 | 0.164 | 20 | 2.000 | 50000000.0\n" + " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n" + "--------------------------|--------:|----------:|--------:|-------:|----------:\n" + " a_a * | 8 | 0.000 | 10 | - |100000000.0\n" + " a_b | 8 | 0.000 | 11 | 1.100 | 90909090.9\n" + " a_c | 8 | 0.000 | 20 | 2.000 | 50000000.0\n" + " a_a * | 64 | 0.001 | 10 | - |100000000.0\n" + " a_b | 64 | 0.001 | 11 | 1.100 | 90909090.9\n" + " a_c | 64 | 0.001 | 20 | 2.000 | 50000000.0\n" + " a_a * | 512 | 0.005 | 10 | - |100000000.0\n" + " a_b | 512 | 0.006 | 11 | 1.100 | 90909090.9\n" + " a_c | 512 | 0.010 | 20 | 2.000 | 50000000.0\n" + " a_a * | 4096 | 0.041 | 10 | - |100000000.0\n" + " a_b | 4096 | 0.045 | 11 | 1.100 | 90909090.9\n" + " a_c | 4096 | 0.082 | 20 | 2.000 | 50000000.0\n" + " a_a * | 8192 | 0.082 | 10 | - |100000000.0\n" + " a_b | 8192 | 0.090 | 11 | 1.100 | 90909090.9\n" + " a_c | 8192 | 0.164 | 20 | 2.000 | 50000000.0\n" "\n" "## test b:\n" "\n" - " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n" - "\n" - " something else * | 10 | 0.001 | 100 | - | 10000000.0\n" - " b_a | 20 | 0.002 | 75 | 0.750 | 13333333.3\n" - " something else * | 20 | 0.002 | 100 | - | 10000000.0\n" - " b_a | 30 | 0.002 | 75 | 0.750 | 13333333.3\n" - " something else * | 30 | 0.003 | 100 | - | 10000000.0\n" - " b_a | 50 | 0.004 | 75 | ??? | 13333333.3\n" + " Name (* = baseline) | Dim | Total ms | ns/op |Baseline| Ops/second\n" + "--------------------------|--------:|----------:|--------:|-------:|----------:\n" + " something else * | 10 | 0.001 | 100 | - | 10000000.0\n" + " b_a | 20 | 0.002 | 75 | 0.750 | 13333333.3\n" + " something else * | 20 | 0.002 | 100 | - | 10000000.0\n" + " b_a | 30 | 0.002 | 75 | 0.750 | 13333333.3\n" + " something else * | 30 | 0.003 | 100 | - | 10000000.0\n" + " b_a | 50 | 0.004 | 75 | ??? | 13333333.3\n" "\n"; sout.str(string());