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.

Variabilità test efficienza

o
orlandoalessio1998 (7730 points)
7 24 36
in Funzionamento degli homework by (7.7k points)
closed by
Salve,
Vorrei delucidazioni sui test di efficienza effettuati sui nostri programmi.

In particolare vorrei sapere perché i test effettuati su uno stesso programma arrivano ad avere un delta di 2 secondi.
Perché devo avere paura di ricaricare il mio programma (più veloce di mezzo secondo , stima effettuata su un totale di 10 test)
Pur sapendo che esso sia più efficiente?

Edit. il mio terzo hw da 8,9 secondi è passato a 13,9 .. lo stesso ricaricato...
952 views
closed with the note: answered

2 Answers

Best answer
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
selected by
I tempi dei vostri esercizi vengono calcolati usando la libreria timeit e facendo eseguire 10 volte il grader.
Il tempo pubblicato è la media delle 10 esecuzioni.
I test vengono eseguiti singolarmente per ciascun esercizio e non in parallelo.
Ho tentato di aumentare il numero di run in maniera dinamica, ma dovendo testare centinaia di esercizi ogni giorno, i tempi dei timeout diventano molto lunghi e la giornata non è sufficiente per farli tutti e darvi una risposta tempestiva.

Dopo la scadenza della consegna posso provare a rieseguire la temporizzazione dei vostri programmi su un numero maggiore di run.
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
giustamente vengono effettuati pochi test per effettuare la media, tutti quei test che vanno in timeout  in effetti porterebbero il server a lavorare all'infinito. L'unica mia perplessità è ma se il server ha carico variabile, i voti (ovviamente mi sto riferendo ai voti oltre il 30) vengono dati in base a quanta fortuna ho avuto io nel centrare il momento buono oppure poi successivamente vengono rieffettuati tutti i test in uno stesso (o simile) stato di carico?
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
I test non vengono eseguiti sul server q2a per evitare di farlo schiattare (già soffre abbastanza nelle ultime ore di consegna).
Li eseguo ad intervalli di 5 minuti sul mio laptop, una macchina abbastanza allegra (MSI 8 core 2.6GHz con 16G ram).
Luca T. (5410 points)
3 20 38
by (5.4k points)
Il problema è che ci sono tante variabili in gioco, il computer non ha un tempo fisso uguale sempre per eseguire un programma e per questo ci sono differenze di tempo tra un'esecuzione e l'altra.
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
si, e questo lo sanno tutti .. ma una differenza che arriva a 2 secondi è eagerata.. sopratutto se poi su quel tempo devo essere valutato
edit 2 secondi o anche più, il mio primo test all'inizio dava un tempo di 199xx ora 14xxx
Luca T. (5410 points)
3 20 38
by (5.4k points)
Più comandi deve eseguire il programma e più eventuali rallentamenti sul pc influiscono su aumentare questo delta. Se il programma impiega pochi millisecondi ad essere eseguito, il delta sarà al più dell'ordine dei millisecondi. Se il programma impiega diversi secondi allora deve eseguire molti comandi e se il computer ha un rallentamento durante quei secondi allora il delta sarà nell'ordine dei secondi anch'esso. Però se non ricordo male il test di efficienza ripete i controlli più e più volte per cercare di ridurre al minimo l'errore.
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
fa il loop 10 volte e fa il migliore di quelle 10 .. rimane comunque il fatto che un delta di 4 secondi non puo e non deve esistere
Luca T. (5410 points)
3 20 38
by (5.4k points)
Allora prova a usare la funzione time e calcolarti tu i tempi più e più volte e vedi che delta ti esce
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
gia fatto e non va sopra ai pochi decimi
Luca T. (5410 points)
3 20 38
by (5.4k points)
Provato ad usare la funzione time per calcolare il tempo mentre usi il grade? A me escono gli stessi risultati, che si discostano di pochi millisecondi. Comunque non ti resta che aspettare il professore in caso.
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
sicuramente è perchè i test ora vengono effettuati sul server e il server deve mantenere attivo il forum.. ovviamente più gente c'è sul forum più carico ha il server ..  ma il punto rimane .. io non devo aver paura di ricaricare il mio programma per 'paura' di avere un tempo 4 secondi maggiorato
Luca T. (5410 points)
3 20 38
by (5.4k points)
In caso questa sarebbe un'altra questione, io parlavo semplicemente del perché il tempo cambiava di volta in volta. Ho letto ora l'edit. Comunque escludo sia un problema del metodo di calcolo del tempo, perché ripeto che facendo in parallelo il grade e usando sul programma stesso la libreria time ho ottenuto i medesimi tempi. Ora non ti so dire se magari i test vengono rieseguiti più volte fino alla data finale, aspetta la risposta del professore.
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
PER FAVORE NON RICARICATE I VOSTRI PROGRAMMI PIU' VOLTE, RALLENTERETE TUTTI I TEST.
RIESEGUIRÒ I TEST DOPO LA CONSEGNA CON UN NUMERO DI RUN MAGGIORE.
I TEST NON VENGONO ESEGUITI IN PARALLELO MA UNO DI SEGUITO ALL'ALTRO.
I TEST SONO ESEGUITI SUL MIO LAPTOP, SEPARATAMENTE DAL SERVER Q2A.