La idea es experimentar que tiempos podemos obtener usando cython.
Para arrancar, vamos a usar como base la implementación en python puro, y simplemente la vamos a compilar.
In [1]:
%matplotlib inline
from trasferencia_calor import solve_explicit, pretty_plot
import time
In [6]:
a = time.time()
t_out, dic = solve_explicit(metodo='explicit_py')
print('Explicito python puro demoro ',time.time() - a, 'segundos')
pretty_plot(t_out, dic)
Copiamos la implementación de python en un archivo separado que termina en .pyx y lo compilamos usando el scrip setup.py haciendo:
$ python setup.py build_ext --inplace
In [4]:
a = time.time()
t_out, dic = solve_explicit(metodo='explicit_cython')
print('Explicito cython demoro ',time.time() - a, 'segundos')
pretty_plot(t_out, dic)
Notar que solo obtuvimos 8 segundo menos.
In [1]:
%matplotlib inline
from trasferencia_calor import solve_explicit, pretty_plot
import time
In [3]:
a = time.time()
t_out, dic = solve_explicit(dz=40, metodo='explicit_cython3')
time.time() - a
Out[3]:
In [2]:
a = time.time()
t_out, dic = solve_explicit(dz=40, metodo='explicit_cython2')
time.time() - a
Out[2]:
In [4]:
a = time.time()
t_out, dic = solve_explicit(dz=40, metodo='explicit_numba')
time.time() - a
Out[4]:
In [3]:
pretty_plot(t_out, dic)
In [ ]: