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}") |