Попробуем рекурсивное вычисление чисел Фибоначчи:
def fib(n):
if n<2:
return n
return fib(n-1)+fib(n-2)
%timeit fib(20)
100 loops, best of 3: 5.53 ms per loop
Процесс можно ускорить в ~3 раза если выполнить данную операцию в Cython:
%load_ext Cython
%%cython
def fib_cython(n):
if n<2:
return n
return fib_cython(n-1)+fib_cython(n-2)
%timeit fib_cython(20)
1000 loops, best of 3: 1.79 ms per loop
Если указать тип переменных («strong typing», что является частью программирования на C
или Julia
), то можно получить ускорение в 100 раз:
%%cython
cpdef long fib_cython_type(long n):
if n<2:
return n
return fib_cython_type(n-1)+fib_cython_type(n-2)
%timeit fib_cython_type(20)
10000 loops, best of 3: 54.3 µs per loop
Write a comment: