Skip to content

Instantly share code, notes, and snippets.

@Attumm
Last active December 24, 2019 16:23
Show Gist options
  • Save Attumm/a05422a5057c7b98bede3b78ca34a911 to your computer and use it in GitHub Desktop.
Save Attumm/a05422a5057c7b98bede3b78ca34a911 to your computer and use it in GitHub Desktop.
import time
from collections import deque
def time_lookup(l, i):
start = time.time()
r = i in l
return time.time() - start
def dict_lookup(d, i):
start = time.time()
try:
r = d[i]
except KeyError:
r = False
return time.time() - start
def dict_lookup_get(d, i):
start = time.time()
r = d.get(i, False)
return time.time() - start
size = 100000
l = list(range(size))
t = tuple(range(size))
dd = deque(range(size))
s = set(range(size))
d = {i:True for i in range(size)}
list_times = [time_lookup(l, i) for i in range(0, size*2, size//8)]
set_times = [time_lookup(s, i) for i in range(0, size*2, size//8)]
tuple_times = [time_lookup(t, i) for i in range(0, size*2, size//8)]
deque_times = [time_lookup(dd, i) for i in range(0, size*2, size//8)]
dict_times = [dict_lookup(d, i) for i in range(0, size*2, size//8)]
dict_get_times = [dict_lookup_get(d, i) for i in range(0, size*2, size//8)]
items = {"list": list_times, "set": set_times, "dict try except": dict_times, "dict get": dict_get_times, "tuple": tuple_times, "deque": deque_times}
template = """datastucture:\t{}\ntotal:\t\t{}\nworstcase:\t{}\nbestcase:\t{}\naverage:\t{}\n"""
for k, i in items.items():
print(template.format(k, sum(i), max(i), min(i), sum(i)/len(i)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment