Hands-on: Using C-functions
In this exercise you can practice using C-functions in Cython modules.
The code for this exercise is located under
Fibonacci numbers are a sequence of integers defined by the recurrence relation
Fn = Fn-1 + Fn-2
with the initial values F0=0, F1=1.
fib.py contains a function
calculates recursively Fn. The function can be used e.g. as
from fib import fibonacci fibonacci(30)
Make a Cython version of the module, and investigate how adding type
information and making
fibonacci a C-function affects performance
(hint: function needs to be called both from Python and C). Use
timeit for performance measurements, either from command line
$ python3 -m timeit -s "from fib import fibonacci" "fibonacci(30)"
or within IPython
In : %timeit fibonacci(30)
Note: this recursive algorithm is very inefficient way of calculating Fibonacci numbers.
How much speedup are you are able to get by using Cython? Are you able to come up with more efficient pure Python algortihm? Please comment!
© CC-BY-NC-SA 4.0 by CSC - IT Center for Science