Skip to content

Instantly share code, notes, and snippets.

@wwgist
Created January 1, 2014 13:32
Show Gist options
  • Save wwgist/8208058 to your computer and use it in GitHub Desktop.
Save wwgist/8208058 to your computer and use it in GitHub Desktop.
PYTHON: time performance
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import time
reps = 1000
repslist = range(reps)
def timer(func, *pargs, **kargs):
start = time.clock()
for i in repslist:
ret = func(*pargs, **kargs)
elapsed = time.clock() - start
return (elapsed, ret)
def forLoop():
res = []
for x in repslist:
res.append(abs(x))
return res
def listComp():
return [abs(x) for x in repslist]
def mapCall():
return list(map(abs, repslist))
# Вызов list необходим только в 3.0
def genExpr():
return list(abs(x) for x in repslist) # Функция list вынуждает
# вернуть сразу все результаты
def genFunc():
def gen():
for x in repslist:
yield abs(x)
return list(gen())
print(sys.version)
for test in (forLoop, listComp, mapCall, genExpr, genFunc):
elapsed, result = timer(test)
print ('-' * 33)
print ('%-9s: %.5f => [%s...%s]' %
(test.__name__, elapsed, result[0], result[-1]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment