Skip to content

Instantly share code, notes, and snippets.

@jbwincek
Created February 29, 2016 08:23
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 jbwincek/6ad21a54967774b7d967 to your computer and use it in GitHub Desktop.
Save jbwincek/6ad21a54967774b7d967 to your computer and use it in GitHub Desktop.
""" Test the speed of various string concatenation methods """
import timeit
def not_join(size = (40,40)):
blank_dict = {}
output = ''
for y in range(size[1]):
if y>0:
output += '\n'
for x in range(size[0]):
output += blank_dict.get((x,y), '.')
return output
def using_join_poorly(size = (40,40)):
blank_dict = {}
output = ''
for y in range(size[1]):
if y>0:
output += '\n'
line = ''.join([blank_dict.get((x, y), '.') for x in range(size[0])])
output += line
return output
def join_all_at_once(size = (40,40)):
blank_dict = {}
output_list = []
for y in range(size[1]):
if y > 0:
output_list.append('\n')
output_list.extend([blank_dict.get((x, y), '.') for x in range(size[0])])
return ''.join(output_list)
data_point_1 = timeit.timeit('not_join()', number=10000, globals=globals())
print(data_point_1)
data_point_2 = timeit.timeit('using_join_poorly()', number=10000, globals=globals())
print(data_point_2)
data_point_3 = timeit.timeit('join_all_at_once()', number=10000, globals=globals())
print(data_point_3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment