71 lines
1.8 KiB
Python
Executable file
71 lines
1.8 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
import pandas as pd
|
|
import seaborn as sns
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib
|
|
import os
|
|
|
|
DIR: str = os.path.dirname(__file__)
|
|
|
|
matplotlib.use('pgf')
|
|
matplotlib.rcParams.update({
|
|
'pgf.texsystem': 'pdflatex',
|
|
'font.family': 'serif',
|
|
'text.usetex': True,
|
|
'pgf.rcfonts': False,
|
|
})
|
|
|
|
df = pd.read_csv(DIR + '/time.csv')
|
|
df['cpu'] = df['user'] + df['sys']
|
|
del df['real']
|
|
del df['user']
|
|
del df['sys']
|
|
|
|
df_cpu = df.loc[~df.cpu.isnull(), :]
|
|
del df_cpu['ltl']
|
|
df_cpu = df_cpu.melt(id_vars=['cpu'])
|
|
df_cpu['value'] = df_cpu['value'].astype(str)
|
|
|
|
df_timeout = df.loc[:, :].copy()
|
|
df_timeout['timeout'] = 0
|
|
df_timeout.loc[df_timeout['cpu'].isnull(), 'timeout'] = 1
|
|
del df_timeout['cpu']
|
|
|
|
|
|
def timeout_by(name: str) -> pd.DataFrame:
|
|
df_return = df_timeout.loc[:, [name, 'timeout']] \
|
|
.groupby(name) \
|
|
.mean() \
|
|
.reset_index()
|
|
|
|
df_return['timeout'] = df_return['timeout'] * 100
|
|
df_return[name] = df_return[name].astype(str)
|
|
return df_return
|
|
|
|
|
|
def plot_by(df_cpu: pd.DataFrame, name: str, color: any):
|
|
# Initialize the matplotlib figure
|
|
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4))
|
|
|
|
sns.stripplot(ax=ax1, color=color, data=df_cpu.loc[df_cpu.variable == name],
|
|
x='cpu', y='value')
|
|
sns.barplot(ax=ax2, color=color, data=timeout_by(name), y=name, x='timeout',
|
|
width=0.75)
|
|
|
|
ax1.set(ylabel='Value of ' + name.upper(), xlim=[0, 300],
|
|
xlabel='CPU time (seconds)')
|
|
ax2.set(ylabel='Value of ' + name.upper(), xlim=[0, 100],
|
|
xlabel='Timeouts (%)')
|
|
|
|
sns.despine(left=True, bottom=True)
|
|
plt.savefig(DIR + '/../plots/' + name + '.pgf')
|
|
|
|
|
|
def main():
|
|
plot_by(df_cpu, 'n', 'teal')
|
|
plot_by(df_cpu, 'length', 'red')
|
|
plot_by(df_cpu, 'r', 'orange')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|