In [1]:
import cython
%reload_ext cython

In [2]:
%%cython
def cfib(n):
    """Print the Fibonacci series up to n."""
    a, b = 0, 1
    while b < n:
        #print b,
        a, b = b, a + b

def cprimes(int kmax):
    cdef int n, k, i
    cdef int p[1000]
    result = []
    if kmax > 1000:
        kmax = 1000
    k = 0
    n = 2
    while k < kmax:
        i = 0
        while i < k and n % p[i] != 0:
            i = i + 1
        if i == k:
            p[k] = n
            k = k + 1
            result.append(n)
        n = n + 1
    return result

In [3]:
#demo_python
import numpy as np
def pyfib(n):
    """Print the Fibonacci series up to n."""
    a, b = 0, 1
    while b < n:
        #print b,
        a, b = b, a + b


def pyprimes(kmax):
    p=np.zeros(1000)
    result = []
    if kmax > 1000:
        kmax = 1000
    k = 0
    n = 2
    while k < kmax:
        i = 0
        while i < k and n % p[i] != 0:
            i = i + 1
        if i == k:
            p[k] = n
            k = k + 1
            result.append(n)
        n = n + 1
    return result

In [4]:
%%timeit -n100
cfib(100000)


100 loops, best of 3: 3.04 µs per loop

In [5]:
%%timeit -n100
pyfib(100000)


100 loops, best of 3: 5.15 µs per loop

In [6]:
%%timeit -n100
cprimes(100000)


100 loops, best of 3: 8.06 ms per loop

In [7]:
%%timeit -n100
pyprimes(100000)


100 loops, best of 3: 822 ms per loop

In [ ]: