我正在尝试各种方法来用Cython编写阶乘函数。首先,我尝试了iPython笔记本中的pyx文件版本。在
%%file pyxfact.pyx
cdef long pyxfact(long n):
if n <=0:
return 1
else:
return n * pyxfact(n-1)
def fact(long n):
return pyxfact(n)
然后我在Cython decorator中尝试了同样的方法,至少我认为是这样的:
^{pr2}$令我惊讶的是,这两个版本在运行时有着巨大的差异:
%timeit -n 10000 pyxfact.fact(10)
%timeit -n 10000 cydecofact.fact(10)
10000 loops, best of 3: 219 ns per loop
10000 loops, best of 3: 2 µs per loop
您需要一个
@cython.compile
来实际编译代码。但是,cython.cfunc
和递归似乎都不支持@cython.compile
。在相关问题 更多 >
编程相关推荐