所以这个关于memoization的页面让我很好奇.我运行自己的基准测试.
%%timeit def fibo(n, dic={}) : if n not in dic : if n in (0,1) : dic[n] = 1 else : dic[n] = fibo(n-1)+fibo(n-2) return dic[ n ] fibo(30)
日期:
100000 loops, best of 3: 18.3 µs per loop
In [21]: %%timeit def fibo(n, dic={}) : try : return dic[n] except : if n in (0,1) : dic[n] = 1 else : dic[n] = fibo(n-1)+fibo(n-2) return dic[ n ] fibo(30)
日期:
10000 loops, best of 3: 46.8 µs per loop
与1)相比,为什么2)这么慢?
正如@kevin在评论中建议的那样,我让装饰者完全错了,所以我把它删除了.其余的仍然有效!(我希望)