From f2df55bf707e680c09398ebc38bd674b49ae5c56 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 16 Jan 2025 10:30:04 +0800 Subject: [PATCH] perf_tests: Right-align numeric metrics in markdown tables Right-align metrics columns in markdown output for better number comparison. Previously, metrics were left-aligned in markdown tables but right-aligned in stdout, making it difficult to visually compare numbers. The change adds colons to the right of hyphens in the header row (e.g. `|---:|`) to right-align entire columns. While this affects both headers and data cells, the improved readability of numeric values outweighs the minor tradeoff of right-aligned headers. In short: - Uses `column::print_text` with ":>" alignment for consistent formatting - Maintains existing stdout_printer right alignment - Updates `markdown_printer` alignment to match stdout behavior Signed-off-by: Kefu Chai --- tests/perf/perf_tests.cc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/tests/perf/perf_tests.cc b/tests/perf/perf_tests.cc index 518555b3094..194c2a42a4c 100644 --- a/tests/perf/perf_tests.cc +++ b/tests/perf/perf_tests.cc @@ -357,6 +357,21 @@ class json_printer final : public result_printer { class markdown_printer final : public result_printer { std::FILE* _output = nullptr; + + void print_header_row(const char* head_text, const char* body_text) { + // start delimeter, and the top-left cell + fmt::print(_output, "| {:<{}}", head_text, name_column_length()); + // the header cells + for (auto& c : text_columns) { + // middle delimeter + fmt::print(_output, " | "); + // right align the text in result cells + c.print_header(_output, body_text); + } + // end delimeter + fmt::print(_output, " |\n"); + } + public: explicit markdown_printer(const std::string& filename) { if (filename == "-") { @@ -375,9 +390,10 @@ class markdown_printer final : public result_printer { } void print_configuration(const config&) override { - // print the header row, then the divider row of all - - print_text_header(_output, text_columns, name_column_length(), "| ", " | ", " |", "test"); - print_text_header(_output, text_columns, name_column_length(), "| ", " | ", " |", "test", "-"); + // print the header row + print_header_row("test", nullptr); + // then the divider row of all - + print_header_row("-", "-:"); } void print_result(const result& r) override {