# 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:]))