Comparing Cython, mpypyc, and default Python speed¶
On a simple thing:
- mypyc gives a 10x speed-up
- cython-3 a 40x speed-up
In [1]:
%load_ext mypyc_ipython
In [2]:
def py_fibonacci(n: int) -> int:
if n <= 1+1:
return 1
else:
return py_fibonacci(n-1) + py_fibonacci(n-2)
In [3]:
%%mypyc
def my_fibonacci(n: int) -> int:
if n <= 2:
return 1
else:
return my_fibonacci(n-1) + my_fibonacci(n-2)
In [4]:
%load_ext cython
In [5]:
%%cython
cpdef int cy_fibonacci(int n):
if n <= 2:
return 1
else:
return cy_fibonacci(n-1) + cy_fibonacci(n-2)
In [6]:
%timeit py_fibonacci(30)
101 ms ± 503 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
In [7]:
%timeit my_fibonacci(30)
8.55 ms ± 248 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [8]:
%timeit cy_fibonacci(30)
2.35 ms ± 75.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [ ]: