File: timeSEQ.py

File: timeSEQ.py

# time sequence operations performance
import time, sys
timeFunc = time.clock
repsList = list(range(1000)) # prebuild lists to remove cost from test
sizeList = list(range(-5000, 5000)) # force list for 3.0 too, else a generator
def tester(func, *args):
 startTime = timeFunc()
 for i in repsList:
 result = func(*args)
 elapsed = timeFunc() - startTime
 return elapsed, result
def process(I): return I * 2 # or abs(x)
def forStatement():
 res = []
 for x in sizeList:
 res.append(process(x)) # or inline: x * 2, abs(x)
 return res
def listComprehension():
 return [process(x) for x in sizeList] # or inline: x * 2, abs(s)
def mapFunction():
 return list(map(process, sizeList)) # force list for 3.0 too, else a generator
def generatorExpression():
 return list(process(x) for x in sizeList) # force list on both 2.6 and 3.0
print (sys.version)
tests = (forStatement, listComprehension, mapFunction, generatorExpression)
for testfunc in tests:
 elapsed, result = tester(testfunc)
 print ( '%-20s => %.3f, %s...%s' % (testfunc.__name__, elapsed, result[:2], result[-2:]))
 #same as:
 #print ( '{0:<20} => {1:.3f}, {2}...{3}'.format(testfunc.__name__, elapsed, result[:2], result[-2:]))



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