Skip to content

Commit

Permalink
Fine tuning Fibonacci example
Browse files Browse the repository at this point in the history
  • Loading branch information
jussienko committed Jan 24, 2020
1 parent e75538a commit 1fb394b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
7 changes: 1 addition & 6 deletions cython/c-functions/solution/fib.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,7 @@ cpdef int fibonacci(int n):
return n
return fibonacci(n-2) + fibonacci(n-1)

def fibonacci_py(int n):
def fibonacci_py(n):
if n < 2:
return n
return fibonacci_py(n-2) + fibonacci_py(n-1)

def fibonacci_py2(n):
if n < 2:
return n
return fibonacci_py2(n-2) + fibonacci_py2(n-1)
4 changes: 4 additions & 0 deletions cython/c-functions/solution/fib_py.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-2) + fibonacci(n-1)
19 changes: 19 additions & 0 deletions cython/c-functions/solution/test_fib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from fib import fibonacci
from fib_py import fibonacci as fibonacci_py
from timeit import repeat

ncython = 100
npython = 10

# Pure Python
time_python = repeat("fibonacci_py(30)", number=npython, globals=locals())
time_python = min(time_python) / npython

# Cython
time_cython = repeat("fibonacci(30)", number=ncython, globals=locals())
time_cython = min(time_cython) / ncython

print("Pure Python: {:5.4f} s".format(time_python))
print("Cython: {:5.4f} s".format(time_cython))
print("Speedup: {:5.1f}".format(time_python / time_cython))

0 comments on commit 1fb394b

Please sign in to comment.