Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

HW 2 - Efficienza e Tempi di esecuzione

cromalde (680 points)
4 6 10
in HW2 by (680 points)

Ciao a tutti,

domanda per i piu "esperti", ho inviato l' HW 2 e ho notato un tempo di esecuzione piu che doppio rispetto al mio ambiente ( e vabbe, ci puo stare), ovvero sono passato da 3.8 millisecondi in locale a 8.7.

Non essendo soddisfatto ho fatto delle piccole modifiche al codice e l'ho inviato di nuovo, risultato in locale 3.1 che diventa 10.1 sad

La domanda quindi é: ci sono "accortezze" da prendere su come/quando consengare gli HW ? anche perche vedo nella leaderboard codici che stanno a 4.9... se il rapporto tra test su macchine di campus e locale é di 3:1 significa codici che viaggiano sotto il millisecondo per tutti e 16 i test... ( Wow). considerando che non supero le 40 righe di codice pero non saprei dove mettere mano per migliorare l'algoritmo cosi tanto ( alla fine non é che le strade percorribili siano molte dovendo rispettare i tipi di ritorno delle funzioni)

Consigli ?

631 views

3 Answers

anon3 (10560 points)
20 66 138
by (10.6k points)
edited by
Un metodo potrebbe essere quello di usare preferibilmente  built-in functions all’interno dei loop: https://www.w3schools.com/python/python_ref_functions.asp

Puntare poi su iterazioni più semplici, pulite e brevi +  utilizzare meno cicli possibile + sfruttare funzioni già definite precedentemente come parte integrante di nuove funzioni (come una matriosca) + evitare l’utilizzo di funzioni ausiliarie oltre le 4 predefinite. Magari anche inizializzare/utilizzare meno variabili includendole una nell’altra.

Ti consiglio inoltre la lettura di questo link (nei limiti del regolamento dell’HW): https://stackify.com/20-simple-python-performance-tuning-tips/

Infine ti avviso che abbiamo aperto, qui su Q2A, tre topic su map() (forse si potrebbe fare lo stesso ragionamento con lambda, ma ora come ora non saprei come usufruirne), sum() e sui commenti# per analizzarli da un punto di vista delle performance. Magari puoi trarne qualche spunto utile.

Nel complesso, diciamo che ci sono più strade per arrivare al medesimo risultato. Fai un po’ di brain-storming buttando giù tutte le ipotesi e le alternative che ti vengono in mente e prova le “scorciatoie” che renderanno meno dispendioso e più produttivo il programma, facendo tuttavia attenzione a non saltare step necessari.

EDIT: Per la questione del tempo c’è un topic a riguardo, se vuoi darci un’occhiata.
SyncroIT (8690 points)
11 30 98
by (8.7k points)
Fai il submit più volte. A me lo stesso codice che mi dava 10 secondi di esecuzione, me ne ha dati 7.8.

La macchina dove vengono eseguiti i test sembra subire dei rallentamenti specialmente nei periodi in cui vengono effettuati più submit (es. di pomeriggio).
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)
Per favore evitate il submit multiplo. I test verranno ripetuti quando farò eseguire i test segreti e il tempo che avete adesso non serve a nulla.
d
danyspadea (4330 points)
1 4 25
by (4.3k points)
Quindi si potrà sapere se si ha il bonus efficienza solamente alla scadenza dell'HW?
Shangry_ (9930 points)
7 25 76
by (9.9k points)
edited by
il professore aveva già avvisato che sulla macchina dove carichiamo il programma è sicuramente più lenta dei nostri pc, quindi è normale vedere il tempo duplicato, il tempo effettivo verrà calcolato alla fine dell'homework, quindi fare il submit più volte è inutile
Nadiage (6430 points)
11 22 58
by (6.4k points)
Il prof sopra ha scritto " Per favore evitate il submit multiplo. I test verranno ripetuti quando farò eseguire i test segreti e il tempo che avete adesso non serve a nulla."