Skip to content

Instantly share code, notes, and snippets.

@apollovy
Created September 18, 2017 16:40
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 apollovy/47037776f23c0a1c0fb790cb996f7310 to your computer and use it in GitHub Desktop.
Save apollovy/47037776f23c0a1c0fb790cb996f7310 to your computer and use it in GitHub Desktop.
import datetime
class Foo:
def __init__(self, x):
self.x = x
def x_key(foo):
return foo.x
def measure_sort(iterable, keyfunc):
time_start = datetime.datetime.now()
xs = list(iterable)
time_middle = datetime.datetime.now()
sorted(xs, key=keyfunc)
time_end = datetime.datetime.now()
time_list = time_middle - time_start
time_sort = time_end - time_middle
print('list: {}, sort: {}'.format(time_list, time_sort))
def subiter():
return range(int(ITER_COUNT))
ITER_COUNT = 1e7
if __name__ == '__main__':
ints = subiter()
foos = (Foo(x) for x in subiter())
measure_sort(ints, None)
measure_sort(foos, x_key)
@apollovy
Copy link
Author

list: 0:00:00.432542, sort: 0:00:00.385156
list: 0:00:14.495493, sort: 0:00:02.550600

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment