Tempo profiler < tempo di test

Romitoskj (8920 points)
4 8 40
asked Nov 18, 2020 in HW4 obbligatorio by Romitoskj (8,920 points)
retagged Nov 18, 2020 by Romitoskj

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 (15190 points)
7 27 105
answered Nov 18, 2020 by twgever (15,190 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.