File: class/Extras/Code/Misc/timerseqs.py

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.')



AltStyle によって変換されたページ (->オリジナル) /