Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Using timeit as library
import timeit
import random
def test(setup, cmd):
repeat = 3
precision = 3
t = timeit.Timer(stmt=cmd, setup=setup)
number, _ = t.autorange()
r = t.repeat(repeat, number)
best = min(r)
units = {"usec": 1, "msec": 1e3, "sec": 1e6}
print(f"{number:>7} loops,", end=' ')
usec = best * 1e6 / number
scales = [(scale, unit) for unit, scale in units.items()]
scales.sort(reverse=True)
# after break scale, time_unit retain values
for scale, time_unit in scales:
if usec >= scale:
break
print(f"best of {repeat}: {usec/scale:{precision+1}.{precision}g} {time_unit} per loop") # noqa
def new_matrix(n):
return str([[random.randint(1, n) for _ in range(n)] for _ in range(n)])
def run_test():
size = [10, 50, 100, 200, 300]
labels = ['v0', 'v1']
for label in labels:
print(f'testing {label}')
setup = f'from first_attempts import saddle_points_{label} as saddle_points' # noqa
for n in size:
m = new_matrix(n)
print(f'{n:>3}', end=' ')
cmd = f'saddle_points({m})'
test(setup, cmd)
run_test()
# test zip vs list comprenhension
# matrix = str([[random.randint(1, 10) for _ in range(10)]
# for _ in range(10)])
# setup = f'matrix={matrix}'
# cmd = '''[[matrix[j][i] for j in range(len(matrix))]
# for i in range(len(matrix[0]))]'''
# print('matrix transpose')
# print(timeit.timeit(cmd, setup=setup))
# cmd = '[list(col) for col in zip(*matrix)]'
# print('matrix transpose with zip')
# print(timeit.timeit(cmd, setup=setup))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment