import sys fin = sys.argv[1] fout = sys.argv[2] prefix = 'test unstable::bench_' table = {} known_a = set() with open(fin) as f: for line in f: line = line.strip() if line.startswith(prefix): content = line[len(prefix):] s, t, a = content.split(' ')[0].split('_') x = int(content.split(':')[1].strip().split(' ')[0].replace(',', '')) if s not in table: table[s] = {} if t not in table[s]: table[s][t] = {} table[s][t][a] = x known_a.add(a) with open(fout, 'w') as f: for s in sorted(table.keys()): f.write('{}:\n'.format(s)) for t in sorted(table[s].keys()): f.write('//! | `{}` |'.format(t)) best = min(table[s][t].values()) for a in sorted(known_a): x = table[s][t][a] if x == best: f.write(' **`{0:,}`** |'.format(x)) else: f.write(' `{0:,}` |'.format(x)) f.write('\n')