From e71aca65d9e3981e75c08525b007b4bdb2c0cb54 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sat, 1 Mar 2025 02:44:35 -0600 Subject: [PATCH] scripts: Adopted default visibility in scripts with complex fields This makes it so scripts with complex fields will still output all fields to output csv/json files, while only showing a user-friendly subset unless -f/--field is explicitly provided. While internal fields are often too much information to show by default, csv/json files are expected to go to other scripts, not humans. So more information is more useful up until you actually hit a performance bottleneck. And if you _do_ somehow manage to hit a performance bottleneck, you can always limit the output with explicit -f/--field flags. --- scripts/cov.py | 8 +++++--- scripts/csv.py | 1 - scripts/ctx.py | 6 ++++-- scripts/perf.py | 10 ++++++---- scripts/structs.py | 6 ++++-- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/scripts/cov.py b/scripts/cov.py index f512462c..9619ea6d 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -953,11 +953,13 @@ def main(gcda_paths, *, else: by = ['function'] + visible = None if fields is None: + fields = ['calls', 'hits', 'funcs', 'lines', 'branches'] if not hits: - fields = ['lines', 'branches'] + visible = ['lines', 'branches'] else: - fields = ['calls', 'hits'] + visible = ['calls', 'hits'] # find sizes if not args.get('use', None): @@ -1019,7 +1021,7 @@ def main(gcda_paths, *, # print table table(CovResult, results, diff_results, by=by, - fields=fields, + fields=visible if visible is not None else fields, sort=sort, **args) diff --git a/scripts/csv.py b/scripts/csv.py index 4d0919b5..69f8e868 100755 --- a/scripts/csv.py +++ b/scripts/csv.py @@ -2346,7 +2346,6 @@ def main(csv_paths, *, # print table if not args.get('quiet'): table(Result, results, diff_results, - # note the use of labels + visible here by=by, fields=visible if visible is not None else fields, sort=sort, diff --git a/scripts/ctx.py b/scripts/ctx.py index 5d2b6060..29fde933 100755 --- a/scripts/ctx.py +++ b/scripts/ctx.py @@ -1268,8 +1268,10 @@ def main(obj_paths, *, else: by = ['function'] + visible = None if fields is None: - fields = ['size'] + fields = ['off', 'size'] + visible = ['size'] # figure out depth if depth is None: @@ -1349,7 +1351,7 @@ def main(obj_paths, *, if not args.get('quiet'): table(CtxResult, results, diff_results, by=by, - fields=fields, + fields=visible if visible is not None else fields, sort=sort, labels=labels, depth=depth, diff --git a/scripts/perf.py b/scripts/perf.py index 96861330..89e258f9 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -1484,13 +1484,15 @@ def report(perf_paths, *, else: by = ['function'] + visible = None if fields is None: + fields = ['cycles', 'bmisses', 'branches', 'cmisses', 'caches'] if not branches and not caches: - fields = ['cycles'] + visible = ['cycles'] elif branches: - fields = ['bmisses', 'branches'] + visible = ['bmisses', 'branches'] else: - fields = ['cmisses', 'caches'] + visible = ['cmisses', 'caches'] # figure out depth if depth is None: @@ -1579,7 +1581,7 @@ def report(perf_paths, *, # print table table(PerfResult, results, diff_results, by=by, - fields=fields, + fields=visible if visible is not None else fields, sort=sort, labels=labels, depth=depth, diff --git a/scripts/structs.py b/scripts/structs.py index 74c3b3dd..4e1e3d5e 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -1088,8 +1088,10 @@ def main(obj_paths, *, else: by = ['struct'] + visible = None if fields is None: - fields = ['size', 'align'] + fields = ['off', 'size', 'align'] + visible = ['size', 'align'] # figure out depth if depth is None: @@ -1169,7 +1171,7 @@ def main(obj_paths, *, if not args.get('quiet'): table(StructResult, results, diff_results, by=by, - fields=fields, + fields=visible if visible is not None else fields, sort=sort, labels=labels, depth=depth,