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.

Tempo profiler < tempo di test

Romitoskj (8920 points)
5 8 40
in HW4 obbligatorio by (8.9k points)
retagged by

Buongiorno a tutti,

da ieri sera sto provando a migliorare il mio codice dato che non ho il bonus per efficienza per 15ms. Ho notato che la funzione che mi occupa più tempo è la funzione che conta gli ES e allora ho trovato un modo alternativo.

Per verificarne l'efficienza ho usato il line profiler eseguendo nel main la funzione ex1 per tutti i 13 file che vengono passati dai test. Secondo il line profiler il nuovo codice ci metteva all'incirca la metà del tempo a eseguire ex1 su tutti i file e allora tutto contento vado ad effettuare i test, sui i quali però i tempi di esecuzione non sono cambiati di una virgola...

Allora, molto deluso, tento il tutto per tutto caricando il nuovo codice sulla VM dove addirittura impiega un tempo superiore di ben 30ms rispetto al vecchio.frown

Sottolineo che nel line profiler la nuova versione ha impiegato all'incirca 530ms in media, mentre la vecchia 1200ms.

Qualcuno ha idea di cosa possa aver causato questa stranissima variazione nei tempi?

1 Answer

twgever (17470 points)
8 29 105
by (17.5k points)
Quando calcoli i tempi, secondo me è meglio se usi "profile" piuttosto che "line profiler". Ancora non ho ben capito cosa cambi nel tempo, ma con un po' di esperimenti mi è sembrato che profile fosse più affidabile sui tempi di esecuzione delle funzioni, mentre line profiler andrebbe usato per calcolare il tempo che ci mettono le singole istruzioni dentro alle funzioni. Almeno così mi è sembrato da una pura analisi empirica.