Misurare il tempo I
Nelle diapositive della lezione hai visto come caricare e usare la funzione time.time() per valutare il tempo necessario a eseguire un'operazione matematica di base.
Ora userai la stessa strategia per confrontare due metodi diversi che risolvono un problema simile: calcolare la somma dei quadrati di tutti i numeri interi positivi da 1 a 1 milione (1.000.000).
Come nel video, confronterai due approcci: uno a forza bruta e uno più sofisticato dal punto di vista matematico.
Nella funzione formula, usiamo la formula standard
$$ \frac{N*(N+1)(2N+1)}{6} $$
dove N=1.000.000.
Nella funzione brute_force iteriamo su ciascun numero da 1 a 1 milione e lo aggiungiamo al risultato.
Questo esercizio fa parte del corso
Scrivere codice efficiente con pandas
Istruzioni dell'esercizio
- Calcola il risultato del problema usando la funzione
formula(). - Stampa il tempo necessario per calcolare il risultato usando la funzione
formula(). - Calcola il risultato del problema usando la funzione
brute_force(). - Stampa il tempo necessario per calcolare il risultato usando la funzione
brute_force().
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Calculate the result of the problem using formula() and print the time required
N = 1000000
fm_start_time = ____
first_method = formula(N)
print("Time using formula: {} sec".format(time.time() - fm_start_time))
# Calculate the result of the problem using brute_force() and print the time required
sm_start_time = ____
second_method = ____(N)
print("Time using the brute force: {} sec".format(time.time() - sm_start_time))