A set of benchmarks to compare a new prototype MiniZinc implementation
at develop 1.3 kB view raw
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)