#!/usr/bin/env python # coding: utf-8 # In[1]: get_ipython().run_line_magic('load_ext', 'autoreload') get_ipython().run_line_magic('autoreload', '2') # In[2]: import os, json, glob import pandas as pd # In[3]: 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 # In[ ]: