Skip to content

Instantly share code, notes, and snippets.

@asimihsan
Last active December 15, 2015 14:49
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 asimihsan/5277325 to your computer and use it in GitHub Desktop.
Save asimihsan/5277325 to your computer and use it in GitHub Desktop.
Benchmarking the use of dictionaries vs. lists.
#!/usr/bin/env python
# Some example results on my machine:
# ─[2013-03-30 16:19:13] ai@Mill ~/Programming/python
# ╰─$ ./list_vs_dict.py
# build_list vs. build_dict: '-9.68'%
# access_list vs. access_dict: '-59.29'%
# ╭─[2013-03-30 16:20:10] ai@Mill ~/Programming/python
# ╰─$ ./list_vs_dict.py
# build_list vs. build_dict: '-18.42'%
# access_list vs. access_dict: '-40.99'%
#
from __future__ import division
def build_dict(num):
d1 = {}
for i in xrange(num):
d1[i] = "blahblah%s" % i
def build_list(num):
l1 = []
for i in xrange(num):
l1.append("blahblah%s" % i)
if __name__ == '__main__':
import timeit
build_dict_result = timeit.timeit("build_dict(1000000)", setup="from __main__ import build_dict", number=10) / 10
build_list_result = timeit.timeit("build_list(1000000)", setup="from __main__ import build_list", number=10) / 10
access_dict_result = timeit.timeit("elem[100]; elem[1000]; elem[10000]; elem[100000]", setup="elem = dict([(i, 'blahblah%s' % i) for i in xrange(1000000)])", number=100000) / 100000
access_list_result = timeit.timeit("elem[100]; elem[1000]; elem[10000]; elem[100000]", setup="elem = ['blahblah%s' % i for i in xrange(1000000)]", number=100000) / 100000
print("build_list vs. build_dict: '%.2f'%%" % ((build_list_result - build_dict_result) / build_dict_result * 100, ))
print("access_list vs. access_dict: '%.2f'%%" % ((access_list_result - access_dict_result) / access_dict_result * 100, ))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment