File: class/Extras/Code/Misc/timerseqs.py
import time, sys repouter = 1000 # build 1K result list 1K times repinner = 1000 # 1K * 1K = 1M iterations per test def runtest(func): start = time.clock() func() stop = time.clock() print func.__name__, '\t:', stop - start def listcomp(): for i in xrange(repouter): t = [x**2 for x in range(repinner)] def mapfunc(): for i in xrange(repouter): t = map((lambda x: x**2), range(repinner)) def forloop(): for i in xrange(repouter): t = [] for x in range(repinner): t.append(x**2) def nestedcomp1(): # but builds a longer list (1M) t = [x**2 for y in range(repouter) for x in range(repinner)] def nestedcomp2(): # but keeps many lists (1K * 1K) t = [[x**2 for x in range(repinner)] for y in range(repouter)] def testcases(): for i in range(2): runtest(listcomp) runtest(mapfunc) runtest(forloop) print '-'*20 runtest(nestedcomp1) runtest(nestedcomp2) if sys.version_info[:2] >= (2, 4): # 2.4 generator expression syntax exec """def gencomp(): for i in xrange(repouter): e = (x**2 for x in range(repinner)) t = list(e)""" runtest(gencomp) testcases() raw_input('Test finished.')