Untitled
unknown
python
a year ago
2.9 kB
9
Indexable
import re
import subprocess
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sys
TIMES = 10
PROCESSES = 1000
ratata = ['\n\tFirst half\nMemory', '\nFirst CPU cycle',
'\n\tSecond half\nMemory', '\nFirst CPU cycle']
def format_stdout(lines, output=False):
lines = lines[lines.index('', lines.index(
'', lines.index('') + 1) + 1) + 1:]
all_values = list()
for i in range(4):
if output:
print(ratata[i])
values = list()
for line in lines[:2]:
if output:
print(line)
for s in re.findall(r"[-+]?\d*\.\d+|\d+", line):
values.append(float(s))
all_values.append(values)
lines = lines[lines.index('', lines.index('') + 1) + 1:]
return all_values
def read_stdout():
print("reading")
lines = list()
while True:
try:
lines.append(input())
except EOFError:
break
format_stdout(lines, output=True)
def run_shit(program, c, i, m):
FIRST = 3
SECOND = 0
mean = list()
for _ in range(5):
print(c/TIMES,i/TIMES,m/TIMES)
result = subprocess.run([f'./{program}', '-c', str(c/TIMES), '-i', str(i/TIMES), '-m', str(
m/TIMES), '-p', str(PROCESSES)], stdout=subprocess.PIPE).stdout.decode('utf-8')
mean.append(format_stdout(result.split("\n"))[FIRST][SECOND])
return np.average(mean)
def run_command():
simple_mean = list()
skeleton_mean = list()
better_mean = list()
memory_mean = list()
x = np.array(range(1, TIMES)) / 10
c = 2 /2
i = 4 / 2
m = TIMES / 2
for m in range(1, TIMES):
simple_mean.append(run_shit('roundrobin', c, i, m))
skeleton_mean.append(run_shit('skeleton', c, i, m))
better_mean.append(run_shit('fast', c, i, m))
memory_mean.append(run_shit('memory', c, i, m))
# mpl.use('pgf')
# mpl.rcParams.update({
# 'text.usetex': True,
# 'pgf.texsystem': 'pdflatex',
# # Hiermee wordt er niet een specifiek lettertype door matplotlib geladen.
# 'pgf.rcfonts': False,
# 'font.family': 'serif',
# 'font.sans-serif': [],
# 'font.monospace': [],
# })
plt.plot(x, memory_mean, label='Memory efficient')
# plt.plot(x, skeleton_mean, label='No CPU scheduler')
plt.plot(x, simple_mean, label="Roundrobin")
plt.plot(x, better_mean, label='Dynamic')
plt.xlabel('Weight of memory')
plt.ylabel('Execution time')
plt.legend()
# plt.yscale('log')
plt.show()
# plt.savefig('MEMORY.pgf', bbox_inches='tight')
def main():
if len(sys.argv) > 1:
read_stdout()
else:
run_command()
if __name__ == "__main__":
try:
main()
except ValueError:
# Compilation failed
pass
Editor is loading...
Leave a Comment