From d580ea4c89daf7196e43e5ec1b32445d19eed2d4 Mon Sep 17 00:00:00 2001 From: Alexander Munch-Hansen Date: Wed, 17 Oct 2018 12:56:46 +0200 Subject: [PATCH] Some test stuff --- h2/tmptest.py | 112 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 101 insertions(+), 11 deletions(-) diff --git a/h2/tmptest.py b/h2/tmptest.py index 6c473ad..4577711 100644 --- a/h2/tmptest.py +++ b/h2/tmptest.py @@ -1,18 +1,109 @@ import random from time import time - +from collections import namedtuple import util from gift_wrapper import rapper from graham import graham_scan from mbc import mbc from quick_hull import quick_hull +import os.path -random.seed(1337_420) +#random.seed(1337_420) +TimedResult = namedtuple("TimedResult", "algorithm points running_time") + + +def time_it(f: callable, args: tuple = (), iterations=20): + start = time() + for i in range(iterations): + f(*args) + return str(time() - start) + + +def initiate_file(file): + with open(file, "w+") as tmp: + tmp.write("algorithm\t\tpoints\t\ttime") + + +def write_to_log(file, data): + + if not os.path.isfile(file): + initiate_file(file) + + tmp = [] + for res in data: + line = str.join("\t\t", res) + print(line) + tmp.append(line) + + write_string = "\n" + str.join("\n", tmp) + + with open(file, "a+") as open_file: + open_file.write(write_string) + + +def do_square_tests(amount_of_points): + points_square = {util.gen_point(0, 100) for _ in range(amount_of_points)} + + results = [] + + amount_of_points = str(amount_of_points) + results.append(TimedResult("graham", amount_of_points, time_it(graham_scan, args=(points_square,)))) + results.append(TimedResult("gift", amount_of_points, time_it(rapper, args=(points_square,)))) + results.append(TimedResult("quick", amount_of_points, time_it(quick_hull, args=(points_square,)))) + results.append(TimedResult("mbch", amount_of_points, time_it(mbc, args=(points_square,)))) + + write_to_log("square_tests.log", results) + + +def do_circular_tests(amount_of_points): + points_circular = {util.gen_point(0, 100) for _ in range(amount_of_points)} + + results = [] + + results.append(TimedResult("graham", amount_of_points, time_it(graham_scan, args=(points_circular,)))) + results.append(TimedResult("gift", amount_of_points, time_it(rapper, args=(points_circular,)))) + results.append(TimedResult("quick", amount_of_points, time_it(quick_hull, args=(points_circular,)))) + results.append(TimedResult("mbc", amount_of_points, time_it(mbc, args=(points_circular,)))) + + write_to_log("circular_tests.log", results) + + +def do_triangular_tests(amount_of_points): + left, right, top = util.Point(1,1), util.Point(51,1), util.Point(26,40) + points = {util.gen_triangular_point(left, right, top) for _ in range(amount_of_points)} + + results = [] + + results.append(TimedResult("graham", amount_of_points, time_it(graham_scan, args=(points,)))) + results.append(TimedResult("gift", amount_of_points, time_it(rapper, args=(points,)))) + results.append(TimedResult("quick", amount_of_points, time_it(quick_hull, args=(points,)))) + results.append(TimedResult("mbc", amount_of_points, time_it(mbc, args=(points,)))) + + write_to_log("triangular_tests.log", results) + + +def do_quadratic_tests(amount_of_points): + points = {util.gen_weird_point(-10, 10) for _ in range(amount_of_points)} + + results = [] + + results.append(TimedResult("graham", amount_of_points, time_it(graham_scan, args=(points,)))) + results.append(TimedResult("gift", amount_of_points, time_it(rapper, args=(points,)))) + results.append(TimedResult("quick", amount_of_points, time_it(quick_hull, args=(points,)))) + results.append(TimedResult("mbc", amount_of_points, time_it(mbc, args=(points,)))) + + write_to_log("quadratic_tests.log", results) + + +""" while True: +#for _ in range(1): print("="*100) - points = {util.gen_point(-100, 100) for i in range(5)} - print("Points:", sorted(points)) + points = {util.gen_point(1, 50) for i in range(10)} + #points = {util.Point(x=1.8814659430990304, y=85.47422952454252), util.Point(x=1.2175949045538488, y=-11.268797645030133), + # util.Point(x=-84.51422984381209, y=34.408366109887965), util.Point(x=10.200690892110572, y=-37.03966055144956), + # util.Point(x=16.52833187640779, y=-71.52321980457693)} # Sanity check graham = set(graham_scan(points)) @@ -26,17 +117,16 @@ while True: print("mbch :", sorted(mbch)) if not gift == graham == quick == mbch: + print("Pppooooiiinnntttss",points) util.display(points=points, hull=mbch) - - -def time_it(f: callable, args: tuple = (), iterations=20): - start = time() - for i in range(iterations): - f(*args) - return time() - start + break print("graham:", time_it(graham_scan, args=(points,))) print("gift:", time_it(rapper, args=(points,))) print("quick:", time_it(quick_hull, args=(points,))) print("mbch:", time_it(mbc, args=(points,))) +""" + +do_square_tests(50) +do_square_tests(100)