Skip to content

Instantly share code, notes, and snippets.

@gvx
Created March 16, 2018 17:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gvx/ded90a954951dcd4a56ed0a71726e6bb to your computer and use it in GitHub Desktop.
Save gvx/ded90a954951dcd4a56ed0a71726e6bb to your computer and use it in GitHub Desktop.
import threading
from time import perf_counter as time
import random
from statistics import median, stdev
results = {'thread': [], 'call': []}
end = 0
def inside():
global end
for n in range(1000000):
pass
end = time()
for _ in range(1000):
r = list(results.items())
random.shuffle(r)
for k, result_list in r:
if k == 'thread':
t_inside = threading.Thread(target=inside)
start = time()
t_inside.start()
t_inside.join()
elif k == 'call':
start = time()
inside()
result_list.append(end - start)
def fmt_time(t):
return format(t * 1000, 'f')
print('(all results in µs)')
print('-' * 6, ' min max median stdev')
for k, result in sorted(results.items(), key=lambda pair: min(pair[1])):
print(f'{k:7}', fmt_time(min(result)), fmt_time(max(result)), fmt_time(median(result)), fmt_time(stdev(result)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment