import time
def performance(unit):
def performance_decorator(f):
def wrapper(*args, **kw):
t1 = time.time()
r = f(*args, **kw)
t2 = time.time()
t = (t2 - t1)*1000 if unit == 'ms' else (t2 - t1)
print 'call %s() in %f %s' %(f.__name__, t, unit)
return r
return wrapper
return performance_decorator
@performance('ms')
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
1 回答
已采纳
清波
TA贡献165条经验 获得超90个赞
是这样的,现在的cpu 运算频率都是GHZ了,如果一个程序(函数)的内部都是运算,而较少,甚至没有IO(输入输出)的话,基本上用这种装饰器计算运行时间,就会超出默认显示位宽了。
建议最后调用时,参数在1100以上:
print factorial(1100)
添加回答
举报
0/150
提交
取消