pfor/ctbenchmarks/plot

122 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys
sys.path.append(os.path.abspath(os.path.dirname(os.path.abspath(__file__))+"/../scripts"))
import fileinput
import numpy as np
import matplotlib as mpl
show = len(sys.argv) > 1 and sys.argv[1] == 'show'
if not show:
mpl.use('pgf')
import matplotlib.pyplot as plt
import matplotlib.lines as lines
from common import set_size, config_plt, get_colors, fix_log_rects
config_plt()
def toFloat(s):
return float(s.split(' ')[1].replace(',', '.'))
def loadData(fn):
content = []
with open(fn) as f:
content = f.readlines()
values = {}
for line in content:
n, real, user, sys, _ = [x for x in line.split(':')]
time = toFloat(user) + toFloat(sys)
if not n in values:
values[n] = []
values[n].append(time);
if "5" in values:
values.pop("5")
return values
def figCT(title, xlabel, xticks, output, datasrcs, legendOutside=False, error=False, log=False):
fig = plt.figure()
plt.title(title)
plt.xlabel(xlabel)
plt.ylabel(u"temps (s)")
plt.xticks(xticks)
if log:
plt.yscale('log')
nd = len(datasrcs)
width = 1.5
pos = .5-.5*nd
for f, label in datasrcs:
values = loadData(f)
barcolor, errcolor = get_colors(['dep/fixed', 'indep/fixed', 'dep/rand', 'indep/rand'], label)
for k, a in values.items():
x = int(k)
m = np.mean(a)
s = 2.5758 * np.std(a) / np.sqrt(len(a))
x = x + pos*width
bar = plt.bar(x, m, width=width, color=barcolor, label=label)
if log:
fix_log_rects(bar, 1e-4)
if error:
plt.errorbar(x, m, s, elinewidth=.8, capsize=1, ecolor=errcolor)
label=''
pos = pos + 1
bbox=(1, 1)
if not legendOutside:
bbox=(.38, 1)
plt.legend(bbox_to_anchor=bbox)
fig.set_size_inches(set_size(455.24408, .8))
if not show:
plt.savefig(output, format='pdf', bbox_inches='tight')
return plt
# script
plts = []
plt = figCT(u"", u"nombre de boucles", [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
"plots/fixediv.pdf", [
['data/ct_fixediv_dep_fixedi', 'dep/fixed'],
['data/ct_fixediv_indep_fixedi', 'indep/fixed'],
['data/ct_fixediv_dep_randi', 'dep/rand'],
['data/ct_fixediv_indep_randi', 'indep/rand'],
],
legendOutside=True,
error=True
)
plts.append(plt)
plt = figCT(u"", u"nombre d'instructions", [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
"plots/fixedv.pdf", [
['data/ct_fixedv_dep_fixedi', 'dep/fixed'],
['data/ct_fixedv_indep_fixedi', 'indep/fixed'],
['data/ct_fixedv_dep_randi', 'dep/rand'],
['data/ct_fixedv_indep_randi', 'indep/rand'],
],
error=True,
log=True
)
plts.append(plt)
if show:
for plt in plts:
plt.show()