Some test stuff
This commit is contained in:
parent
a96c03fa9e
commit
d580ea4c89
112
h2/tmptest.py
112
h2/tmptest.py
|
@ -1,18 +1,109 @@
|
||||||
import random
|
import random
|
||||||
from time import time
|
from time import time
|
||||||
|
from collections import namedtuple
|
||||||
import util
|
import util
|
||||||
from gift_wrapper import rapper
|
from gift_wrapper import rapper
|
||||||
from graham import graham_scan
|
from graham import graham_scan
|
||||||
from mbc import mbc
|
from mbc import mbc
|
||||||
from quick_hull import quick_hull
|
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:
|
while True:
|
||||||
|
#for _ in range(1):
|
||||||
print("="*100)
|
print("="*100)
|
||||||
points = {util.gen_point(-100, 100) for i in range(5)}
|
points = {util.gen_point(1, 50) for i in range(10)}
|
||||||
print("Points:", sorted(points))
|
#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
|
# Sanity check
|
||||||
graham = set(graham_scan(points))
|
graham = set(graham_scan(points))
|
||||||
|
@ -26,17 +117,16 @@ while True:
|
||||||
print("mbch :", sorted(mbch))
|
print("mbch :", sorted(mbch))
|
||||||
|
|
||||||
if not gift == graham == quick == mbch:
|
if not gift == graham == quick == mbch:
|
||||||
|
print("Pppooooiiinnntttss",points)
|
||||||
util.display(points=points, hull=mbch)
|
util.display(points=points, hull=mbch)
|
||||||
|
break
|
||||||
|
|
||||||
def time_it(f: callable, args: tuple = (), iterations=20):
|
|
||||||
start = time()
|
|
||||||
for i in range(iterations):
|
|
||||||
f(*args)
|
|
||||||
return time() - start
|
|
||||||
|
|
||||||
|
|
||||||
print("graham:", time_it(graham_scan, args=(points,)))
|
print("graham:", time_it(graham_scan, args=(points,)))
|
||||||
print("gift:", time_it(rapper, args=(points,)))
|
print("gift:", time_it(rapper, args=(points,)))
|
||||||
print("quick:", time_it(quick_hull, args=(points,)))
|
print("quick:", time_it(quick_hull, args=(points,)))
|
||||||
print("mbch:", time_it(mbc, args=(points,)))
|
print("mbch:", time_it(mbc, args=(points,)))
|
||||||
|
"""
|
||||||
|
|
||||||
|
do_square_tests(50)
|
||||||
|
do_square_tests(100)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user