1 min readJan 12, 2020
I am blown away by the amount of speed up provided by “use local variable” and “don’t access attribute”.
>>> import random>>> import timeit>>> def fun1():
... for _ in range(10000):
... random.random()>>> def fun2():
... r = random.random
... for _ in range(10000):
... r()>>> timeit.timeit('fun1()', setup='from __main__ import fun1', number=1000)
1.3499903420000123>>> timeit.timeit('fun2()', setup='from __main__ import fun2', number=1000)
0.7535411869999962>>> from random import random>>> def fun3():
... for _ in range(10000):
... random()>>> timeit.timeit('fun3()', setup='from __main__ import fun3', number=1000)
0.8960432139999739