Numpy – Confronto velocità tra loop e funzioni
In questo capitolo confrontiamo la differenza di prestazioni tra l’utilizzo delle funzioni matematiche di numpy e gli stessi calcoli eseguiti utilizzando un ciclo loop.
L’indice del corso lo puoi trovare a questo Link: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/numpy-per-python/
Iniziamo a scrivere un programmino con l’editor di Python suddiviso in due parti, la prima che calcola il prodotto tra due array all’interno di un ciclo for mentre nella seconda si calcola utilizzando la funzione .dot()
Codice:
import numpy as np from datetime import datetime a = np.random.randn(100) b = np.random.randn(100) T = 100000 def slow_dot_product(a,b): result = 0 for e, f in zip(a, b): result += e*f return result t0 = datetime.now() for t in xrange(T): slow_dot_product(a, b) dt1 = datetime.now() - t0 t0 = datetime.now() for t in xrange(T): a.dot(b) dt2 = datetime.now() - t0 print "dt1 / dt2:", dt1.total_seconds() , "|", dt2.total_seconds()
La differenza è davvero molta!
====================== RESTART: C:/Python27/dot_for.py ====================== dt1 / dt2: 4.203 | 0.119 >>>
Da quattro secondi per un ciclo for a decimi di secondo utilizzando le funzioni di numpy.