Computer 4 dummy

Informatica facile a portata di tutti

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.