nb_step = 1e6
dic_table = {}
for path in glob.glob('dump/perf-*/results.json'):
with open(path, 'r') as f:
dic = json.loads(f.read())
lang, machine, nb_core, parallel = dic['name'].split('-')[1:5]
nb_core = int(nb_core)
if nb_core == 1: parallel = 'none'
key = (machine, lang, nb_core, parallel)
dic_table[key] = {
'Runtime (s)': dic['runtime'],
'Best Solution': min([e['dist'] for e in dic['solutions']]),
'Nb Step/core/sec': nb_step/dic['runtime'],
'Nb Step/sec': nb_core*nb_step/dic['runtime'],
}
df = pd.DataFrame(dic_table).T
df.index.names = ['Machine', 'Lang', 'Nb Core', 'Parallel']
df = df.reset_index()
df['machine_no'] = df['Machine'].replace({'MBPro': 1, 'iMac': 2, 'LinuxVM': 3})
df['parallel_no'] = df['Parallel'].replace({'none': 0, 'concurrent': 2, 'omp': 3})
df = df.sort_values(['Lang', 'parallel_no', 'Nb Core', 'machine_no'])
df = df.reset_index(drop=True)
df = df[['Machine', 'Lang', 'Nb Core', 'Parallel', 'Runtime (s)',
'Best Solution', 'Nb Step/core/sec', 'Nb Step/sec']]
df['Raw Speed'] = df['Nb Step/sec']/df['Nb Step/sec'].iloc[0]
df['Speed Up/machine'] = 1.0
for i in range(1, 5):
for j in range(3):
k = i*3+j
df.loc[k, 'Speed Up/machine'] = df['Raw Speed'].iloc[k]/df['Raw Speed'].iloc[j]
df['Runtime (s)'] = df['Runtime (s)'].map('{:.2f}'.format)
df['Best Solution'] = df['Best Solution'].map('{:.6f}'.format)
df['Nb Step/core/sec'] = df['Nb Step/core/sec'].map('{:,.0f}'.format)
df['Nb Step/sec'] = df['Nb Step/sec'].map('{:,.0f}'.format)
df['Raw Speed'] = df['Raw Speed'].map('{:.1f}'.format)
df['Speed Up/machine'] = df['Speed Up/machine'].map('{:.1f}'.format)
df.to_csv('dump/df_perf.csv')
df