Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67c944b3 authored by Joe Onorato's avatar Joe Onorato
Browse files

Allow filtering and sorting by tag in benchmark result formatting

Test: build/make/tools/perf/format_benchmarks --tags n2d-standard-128 n2-standard-80 n2d-standard-48
Change-Id: Ie4a4e36d4bc2aab50a017acbaf3ef0e23ddae958
parent e1cd8461
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -133,12 +133,16 @@ def format_duration_sec(ns):
        result += f"{m:2d}m "
    return result + f"{sec:2d}s"


def main(argv):
    parser = argparse.ArgumentParser(
            prog="format_benchmarks",
            allow_abbrev=False, # Don't let people write unsupportable scripts.
            description="Print analysis tables for benchmarks")

    parser.add_argument("--tags", nargs="*",
                        help="The tags to print, in order.")

    parser.add_argument("summaries", nargs="*",
                        help="A summary.json file or a directory in which to look for summaries.")

@@ -154,8 +158,18 @@ def main(argv):
        s["datetime"] = dt
        s["date"] = datetime.date(dt.year, dt.month, dt.day)

    # Filter out tags we don't want
    if args.tags:
        summaries = [(f, s) for f, s in summaries if s.get("tag", "") in args.tags]

    # If they supplied tags, sort in that order, otherwise sort by tag
    if args.tags:
        tagsort = lambda tag: args.tags.index(tag)
    else:
        tagsort = lambda tag: tag

    # Sort the summaries
    summaries.sort(key=lambda s: (s[1]["date"], s[1]["branch"], s[1]["tag"]))
    summaries.sort(key=lambda s: (s[1]["date"], s[1]["branch"], tagsort(s[1]["tag"])))

    # group the benchmarks by column and iteration
    def bm_key(b):