from jug import TaskGenerator from time import time from collections import namedtuple from itertools import islice INPUT_FILE = 'input.txt' CreateDeleteTime = namedtuple('CreateDeleteTime', ['create', 'delete']) @TaskGenerator def time_create_delete(n): start = time() v = set(line.strip() for line in islice(open(INPUT_FILE), n)) mid = time() del v end = time() r = CreateDeleteTime(mid - start, end - mid) print(n, r) return r @TaskGenerator def write_output(timings, oname): with open(oname, 'wt') as output: output.write("{:12} {:8} {:8}\n".format("N", "create (s)", "delete (s)")) for k,(c,d) in sorted(timings.items()): output.write("{:12} {:8.2f} {:8.2f}\n".format(k,c,d)) timings = {} for n in [1 ,10 ,100 ,1000 ,1000*10 ,1000*100 ,1000*1000 ,1000*1000 ,1000*1000*10 # Up til here everything is OK-ish ,1000*1000*100 ,1000*1000*200 ,1000*1000*300 ,1000*1000*400 ,1000*1000*500 ,1000*1000*600 ,1000*1000*700 ,1000*1000*800 ,1000*1000*900 ,1000*1000*1000 ,1000*1000*1100 ,1000*1000*1200 ,1000*1000*1300 ,1000*1000*1400 ,1000*1000*1500 ]: timings[n] = time_create_delete(n) write_output(timings, 'timings.txt')