Skip to content

Instantly share code, notes, and snippets.

@victorusachev
Created November 6, 2019 23:42
Show Gist options
  • Select an option

  • Save victorusachev/5e9c00e946174fe5403f2c4ca2d9b9d9 to your computer and use it in GitHub Desktop.

Select an option

Save victorusachev/5e9c00e946174fe5403f2c4ca2d9b9d9 to your computer and use it in GitHub Desktop.
from timeit import Timer
def concatenation(sequence):
result = ''
for char in sequence:
result += char
return result
def joining(sequence):
return ''.join(sequence)
def create_timer(func, sequence):
timer = Timer(
f'{func.__name__}(sequence)',
f'from __main__ import {func.__name__}',
globals=dict(sequence=sequence)
)
return timer
def main(*numbers, as_tuple=False):
row_format = '{:<25}' * (len(numbers) + 1)
print(row_format.format('Method / Number', *numbers))
for func in (concatenation, joining):
sequence = ('s' for _ in range(1000))
if as_tuple:
sequence = tuple(sequence)
timer = create_timer(func, sequence)
results = {}
for number in numbers:
results[number] = timer.timeit(number=number)
print(row_format.format(func.__name__, *results.values()))
if __name__ == '__main__':
numbers = 100, 1000, 10000
print('Sequence as tuple')
main(*numbers, as_tuple=True)
print('\nSequence as generator')
main(*numbers, as_tuple=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment