25 lines
390 B
Cython
25 lines
390 B
Cython
cdef unsigned long fibonacci(unsigned long n) nogil:
|
|
if n <= 1:
|
|
return n
|
|
|
|
cdef unsigned long a = 0, b = 1, c = 0
|
|
|
|
c = a + b
|
|
for _i in range(2, n):
|
|
a = b
|
|
b = c
|
|
c = a + b
|
|
|
|
return c
|
|
|
|
|
|
def cython_nogil(unsigned long n):
|
|
with nogil:
|
|
value = fibonacci(n)
|
|
|
|
return value
|
|
|
|
|
|
def cython_gil(unsigned long n):
|
|
return fibonacci(n)
|