In [1]:
%load_ext Cython
In [2]:
def smooth_py(a):
n = len(a) - 1
for i in range(1, n):
a[i] = (a[i-1] + a[i] + a[i+1]) / 3.0
return a
In [3]:
%%cython
def smooth_c1(a):
cdef unsigned int i, n=len(a) - 1
for i in range(1, n):
a[i] = (a[i-1] + a[i] + a[i+1]) / 3.0
return a
In [13]:
%%cython
cdef list smooth_c2(list a):
cdef unsigned int i, n=len(a) - 1
for i in range(1, n):
a[i] = (a[i-1] + a[i] + a[i+1]) / 3.0
return a
In [4]:
from random import sample
In [24]:
a = sample(range(1000), k=1000)
In [25]:
%timeit -n3 -r5 smooth_py(a[:])
In [26]:
%timeit -n3 -r5 smooth_c1(a[:])
In [27]:
%timeit -n3 -r5 smooth_c2(a[:])