From c2b7184126fed583e482afdd158501ab12a61ad0 Mon Sep 17 00:00:00 2001 From: Tyker Date: Fri, 7 Aug 2020 19:02:25 +0200 Subject: [PATCH] [NFC] Add utility to sum/merge stats files Add a small script to sum *.stats file given as input and output the totals usage example: merge-stats.py $(find ./builddir/ -name "*.stats") > total.stats Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D83505 --- utils/merge-stats.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 utils/merge-stats.py diff --git a/utils/merge-stats.py b/utils/merge-stats.py new file mode 100755 index 00000000000..342be3c9002 --- /dev/null +++ b/utils/merge-stats.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +''' +Merge .stats files generated by llvm tools + +merge-stats.py takes as argument a list of stats files to merge +and output the result on stdout + +Usage: + merge-stats.py $(find ./builddir/ -name "*.stats") > total.stats +''' + +import json +import sys + +result = {} + +for arg in range(1, len(sys.argv)): + with open(sys.argv[arg], "r", encoding='utf-8', + errors='ignore') as f: + text = f.read() + try: + data = json.loads(text) + except: + print('ignored %s: failed to parse' % sys.argv[arg], file= sys.stderr) + continue + for key in data: + if key in result: + result[key] += data[key] + else: + result[key] = data[key] + +out = json.dumps(result, indent=2) +print(out)