A set of benchmarks to compare a new prototype MiniZinc implementation
1#!/usr/bin/env python3
2import sys
3import csv
4
5if len(sys.argv) < 4:
6 print(
7 "Usage: compare_statistics.py <stats_old.csv> <stats_new.csv> <statistic_name>..."
8 )
9 exit(1)
10
11# Read result files
12old = {}
13with open(sys.argv[1], newline="") as csvfile:
14 reader = csv.DictReader(csvfile)
15 for row in reader:
16 columns = []
17 for stat in sys.argv[3:]:
18 columns.append(row[stat])
19 old[(row["problem"], row["data_file"])] = columns
20new = {}
21with open(sys.argv[2], newline="") as csvfile:
22 reader = csv.DictReader(csvfile)
23 for row in reader:
24 columns = []
25 for stat in sys.argv[3:]:
26 columns.append(row[stat])
27 new[(row["problem"], row["data_file"])] = columns
28
29# Select Matching rows
30keys = ["problem", "data_file"]
31for stat in sys.argv[3:]:
32 keys.extend([f"old_{stat}", f"new_{stat}"])
33
34writer = csv.DictWriter(sys.stdout, keys, dialect="unix", extrasaction="ignore")
35writer.writeheader()
36for key, val in old.items():
37 if key in new:
38 row = {
39 "problem": key[0],
40 "data_file": key[1],
41 }
42 for i in range(len(val)):
43 row[f"old_{sys.argv[3+i]}"] = val[i]
44 row[f"new_{sys.argv[3+i]}"] = new[key][i]
45 writer.writerow(row)