import os import os.path import json comparisons = [] for (root, _dirs, files) in os.walk('target/criterion'): for file in files: if file == 'estimates.json' and root.endswith( 'new') and 'TinyVec' in root: path = os.path.join(root, file) bench_name = path.split('/')[3] tinyvec_time = json.load(open(path))['mean']['point_estimate'] path = path.replace('TinyVec', 'SmallVec') smallvec_time = json.load(open(path))['mean']['point_estimate'] comparisons.append((bench_name, tinyvec_time / smallvec_time)) comparisons.sort(key=lambda x: x[1]) longest_name = max(len(c[0]) for c in comparisons) for (name, ratio) in comparisons: # Undo the criterion name mangling name = name.replace('_[', '<[') name = name.replace(']___', ']>::') name = name.ljust(longest_name) print(f"{name} {ratio:.2f}")