trace2: cleanup column alignment in perf target format
Truncate/elide very long "filename:linenumber" field. Truncate region and data "category" field if necessary. Adjust overall column widths. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff Hostetler committed
Jul 31, 2019 at 13:04 UTC
371df1bea994d14347c3bea7a67066056d86b093
1 file changed
+29
-10
trace2/tr2_tgt_perf.c
+29
-10
@@ -21,10 +21,10 @@ static struct tr2_dst tr2dst_perf = { TR2_SYSENV_PERF, 0, 0, 0 };
21
*/
22
static int tr2env_perf_be_brief;
23
24
-#define TR2FMT_PERF_FL_WIDTH (50)
24
+#define TR2FMT_PERF_FL_WIDTH (28)
25
#define TR2FMT_PERF_MAX_EVENT_NAME (12)
26
-#define TR2FMT_PERF_REPO_WIDTH (4)
27
-#define TR2FMT_PERF_CATEGORY_WIDTH (10)
26
+#define TR2FMT_PERF_REPO_WIDTH (3)
27
+#define TR2FMT_PERF_CATEGORY_WIDTH (12)
28
29
#define TR2_DOTS_BUFFER_SIZE (100)
30
#define TR2_INDENT (2)
@@ -79,17 +79,36 @@ static void perf_fmt_prepare(const char *event_name,
79
80
if (!tr2env_perf_be_brief) {
81
struct tr2_tbuf tb_now;
82
+ size_t fl_end_col;
83
84
tr2_tbuf_local_time(&tb_now);
85
strbuf_addstr(buf, tb_now.buf);
86
strbuf_addch(buf, ' ');
87
87
- if (file && *file)
88
- strbuf_addf(buf, "%s:%d ", file, line);
89
- while (buf->len < TR2FMT_PERF_FL_WIDTH)
88
+ fl_end_col = buf->len + TR2FMT_PERF_FL_WIDTH;
89
+
90
+ if (file && *file) {
91
+ struct strbuf buf_fl = STRBUF_INIT;
92
+
93
+ strbuf_addf(&buf_fl, "%s:%d", file, line);
94
+
95
+ if (buf_fl.len <= TR2FMT_PERF_FL_WIDTH)
96
+ strbuf_addbuf(buf, &buf_fl);
97
+ else {
98
+ size_t avail = TR2FMT_PERF_FL_WIDTH - 3;
99
+ strbuf_addstr(buf, "...");
100
+ strbuf_add(buf,
101
+ &buf_fl.buf[buf_fl.len - avail],
102
+ avail);
103
+ }
104
+
105
+ strbuf_release(&buf_fl);
106
+ }
107
+
108
+ while (buf->len < fl_end_col)
109
strbuf_addch(buf, ' ');
110
92
- strbuf_addstr(buf, "| ");
111
+ strbuf_addstr(buf, " | ");
112
}
113
114
strbuf_addf(buf, "d%d | ", tr2_sid_depth());
@@ -102,7 +121,7 @@ static void perf_fmt_prepare(const char *event_name,
121
strbuf_addf(buf, "r%d ", repo->trace2_repo_id);
122
while (buf->len < len)
123
strbuf_addch(buf, ' ');
105
- strbuf_addstr(buf, "| ");
124
+ strbuf_addstr(buf, " | ");
125
126
if (p_us_elapsed_absolute)
127
strbuf_addf(buf, "%9.6f | ",
@@ -116,8 +135,8 @@ static void perf_fmt_prepare(const char *event_name,
135
else
136
strbuf_addf(buf, "%9s | ", " ");
137
119
- strbuf_addf(buf, "%-*s | ", TR2FMT_PERF_CATEGORY_WIDTH,
120
- (category ? category : ""));
138
+ strbuf_addf(buf, "%-*.*s | ", TR2FMT_PERF_CATEGORY_WIDTH,
139
+ TR2FMT_PERF_CATEGORY_WIDTH, (category ? category : ""));
140
141
if (ctx->nr_open_regions > 0) {
142
int len_indent = TR2_INDENT_LENGTH(ctx);