def parse_timedelta(strrep):
minutes, seconds = strrep.split(":")
- return seconds + 60 * minutes
+ return float(seconds) + 60 * float(minutes)
class SolverExperiment(Experiment):
def run(self):
print("Building Solver ...")
self.build_solver()
- formulas = sorted(os.listdir(self.inputs.formulas.path), key=natural_key)
- shell.track(self.outputs.timing.path)
- for formula in formulas:
- print("Running for %s ..." % formula)
- try:
- self.run_solver(os.path.join(self.inputs.formulas.path, formula))
- except CommandFailed:
- break
+ with self.inputs.formulas as path:
+ formulas = sorted(os.listdir(path), key=natural_key)
+ shell.track(self.outputs.timing.path)
+
+ for formula in formulas:
+ print("Running for %s ..." % formula)
+ try:
+
+ self.run_solver(os.path.join(path, formula))
+ except CommandFailed:
+ break
class ComparisonExperiment(Experiment):
outputs = { 'cool_data' : CSV_File('cool.csv'),
'treetab_data' : CSV_File('treetab.csv'),
+ 'gmul_data' : CSV_File('gmul.csv'),
'graphs' : Directory('graphs')
}
inputs = { 'cool' : CoolExperiment(),
- 'treetab' : TreeTabExperiment()
+ 'treetab' : TreeTabExperiment(),
+ 'gmul' : GMULExperiment()
}
def folder_to_csv(self, folder, csv):
command = command.split("<")[1].strip().strip('"')
formula = os.path.basename(command)
time = parse_timedelta(timeline.split(": ")[1].strip())
+ time = time if time > 0 else 0.001
memory = memoryline.split(": ")[1].strip()
csv.append([formula, time, memory])
csv.flush()
def run(self):
self.folder_to_csv(self.inputs.cool.timing.path, self.outputs.cool_data)
self.folder_to_csv(self.inputs.treetab.timing.path, self.outputs.treetab_data)
+ self.folder_to_csv(self.inputs.gmul.timing.path, self.outputs.gmul_data)
with self.outputs.graphs as path:
+ samplecount = len(self.outputs.cool_data.value)
# Time
plt.title("Time spent: %s" %
os.path.basename(self.inputs.treetab.metadata['formulas']))
plt.yscale('log')
plt.ylabel('time / s')
+ plt.ylim(0.001, 10000)
plt.xlabel('problem size')
- plt.plot(range(1,21),
+ plt.plot([x[0].split('.')[1] for x in self.outputs.cool_data.value],
[x[1] for x in self.outputs.cool_data.value],
'bo', label="cool")
- plt.plot(range(1,21),
+ plt.plot([x[0].split('.')[1] for x in self.outputs.treetab_data.value],
[x[1] for x in self.outputs.treetab_data.value],
'gv', label="TreeTab")
- plt.legend()
+ plt.plot([x[0].split('.')[1] for x in self.outputs.gmul_data.value],
+ [x[1] for x in self.outputs.gmul_data.value],
+ 'r*', label="GMUL")
+
+ plt.legend(loc=2)
plt.savefig('time.svg', format='svg')
plt.close()
plt.yscale('log')
plt.ylabel('memory / kB')
plt.xlabel('problem size')
- plt.plot(range(1,21),
+ plt.plot([x[0].split('.')[1] for x in self.outputs.cool_data.value],
[x[2] for x in self.outputs.cool_data.value],
'bo', label="cool")
- plt.plot(range(1,21),
+ plt.plot([x[0].split('.')[1] for x in self.outputs.treetab_data.value],
[x[2] for x in self.outputs.treetab_data.value],
'gv', label="TreeTab")
- plt.legend()
+ plt.plot([x[0].split('.')[1] for x in self.outputs.gmul_data.value],
+ [x[2] for x in self.outputs.gmul_data.value],
+ 'r*', label="GMUL")
+
+ plt.legend(loc=2)
plt.savefig('memory.svg', format='svg')