passare un argomento o no HW2

giordano_sannino (13650 points)
7 16 81
asked Nov 2, 2020 in HW2 obbligatorio by giordano_sannino (13,650 points)
recategorized Nov 3, 2020 by andrea.sterbini

Secondo voi è più efficiente creare un dizionario fuori dalla funzione e passarlo ogni volta oppure crearlo nella funzione(ma cosi si creerebbe ogni volta che la chiamo)?

La funzione viene chiamato ogni turno 4 volte(HW2), vorrei capire in generale quale metodo è migliore dei due, se passare ogni volta un argomento in più(dizionario) o crearlo ogni volta nella funzione?

171 views

5 Answers

Best answer
R
Rebs99 (2280 points)
2 4 10
answered Nov 3, 2020 by Rebs99 (2,280 points)
selected Nov 3, 2020 by giordano_sannino
Se per 'creare un dizionario fuori dalla funzione' intendi dire, crearlo fuori da un'eventuale funzione ausiliaria per il calcolo dei punti, decisamente sì.
Se te lo crei all'interno della tua funzione principale, verrà costruito solo una volta ad inizio esercizio e sarà sfruttato poi dall'ausiliaria. Altrimenti, ogni volta che richiami l'ausiliaria per il calcolo dei punti, perdi tempo a creare lo stesso dizionario da capo, più volte e più volte. Decisamente un passaggio inutile
Rametto (4910 points)
3 4 25
answered Nov 2, 2020 by Rametto (4,910 points)
Sicuramente crearlo dentro ti aiuta a ridurre il tempo di esecuzione, crealo all'inizio della funzione corrente
Marco Freddi (1420 points)
1 2 16
answered Nov 2, 2020 by Marco Freddi (1,420 points)
Passarlo ogni volta sicuramente impegna un pochino il programma ogni volta, crearlo dentro potrebbe essere meglio se magari il programma mantiene una sorta di memoria di quel dizionario dopo averlo creato per la prima volta.
Comunque ti consiglio di provare nei due modi e misurare il tempo di esecuzione (con pytest, libreria time o altro), così sei sicuro.
gusgus (1730 points)
5 8 31
answered Nov 2, 2020 by gusgus (1,730 points)
crearlo all'interno è un grande spreco di risorse, a meno che non ti serva resettato ogni volta. Sia per una pulizia del codice ma anche per logica ti consiglio di tenerlo fuori. Anche perché crearlo all'interno più e più volte prenderebbe molto più tempo. (nel caso dei dizionari e liste il tempo di creazione è più lento della chiamata come parametro perché si tratta di più valori)
C
ChristianSt (1790 points)
3 9 25
answered Nov 2, 2020 by ChristianSt (1,790 points)
ho testato personalmente e effettivamente crearlo ogni volta dentro la funzione aumenta di molto il tempo, lo so, non e' una soluzione elegante, ma se vuoi abbassare il tempo, passalo come argomento alla funzione