File: lentimer.py
"test the relative speeds of len(X) versus X.__len__()" import time, sys def timer(func, reps=50): """ time the best of N runs of a zero-arg function; see also generalized timer() in the book LP4E, pages 509..518, in Chapter 20, Functions part """ best = 2 ** 32 for i in range(reps): start = time.clock() retval = func() elapsed = time.clock() - start if elapsed < best: best = elapsed return (best, retval) # hoist out and equate range() time: list in 2.X, generator in 3.X innerloop = list(range(500000)) # # test cases: both take len of 500k list, 500k times # def builtinFunc(): for i in innerloop: x = len(innerloop) return x def underMethod(): for i in innerloop: x = innerloop.__len__() return x if __name__ == '__main__': print(sys.version.split()[0]) for func in (builtinFunc, underMethod): print(func.__name__) print(timer(func))