为什么Cython Decorator版本比cythonpyx版本慢?

2024-09-30 12:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试各种方法来用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

Tags: of方法函数版本loopreturncythonlong

热门问题