标签:
在python学习手册上看到的,比较实用,测试包括两个文件:
MyTimer.py:一个简单的函数计时器
test.py:测试5中迭代方式
MyTimer.py文件:
__author__ = ‘lmw‘
import time
reps = 1000
#函数重复次数
repslist = range(reps)
def timer(func,*pargs,**kargs):
# func函数名称,后面两个是参数
start = time.clock()
# 开始时间
for i in repslist:
ret = func(*pargs,**kargs)
elapsed = time.clock() - start
# 花费时间
return (elapsed,ret)
# ret记录最后一次结果
test.py文件:
import sys,MyTimer
reps=1000
repslist=range(reps)
def forloop():
res = []
for x in repslist:
res.append(abs(x))
return res
#通过for循环迭代
def listComp():
return [abs(x) for x in repslist]
#列表解析
def mapCall():
return list(map(abs,repslist))
#调用map
def genExpr():
return list(abs(x) for x in repslist)
#生成器表达式
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 = MyTimer.timer(test)
print (‘-‘*33)
print (‘%-9s: %.5f => [%s...%s]‘%(test.__name__,elapsed,result[0],result[-1]))
测试结果:
可以看出效率从高到低依次为:
调用map>列表解析>生成器函数>生成器表达式>for循环
博客园代码编辑器不太好用,需要拷贝源码的小伙伴请访问www.from0701.com
标签:
原文地址:http://www.cnblogs.com/from0701/p/4686509.html