tempi catastrofici della WM

T
Trasciatti (1400 points)
10 20 34
asked Oct 30, 2019 in HW2 obbligatorio by Trasciatti (1,400 points)
closed Nov 1, 2019 by Trasciatti
Ciao a tutti, come sempre la virtual machine è un po' più lenta e dobbiamo ingegnarci di più. Ho raffinato il mio programma più che potevo, e sul mio computer passa il test 5 in circa un secondo. Sulla VM, va in timeout dopo 31s. Contando che in media gli altri test ci mettono molto poco (0,43 per il secondo più lento, 0,001 per gli altri [tempi sulla VW]), è possibile mai che ci metta >=31 secondi sul quinto? E' davvero catastrofico, al più mi aspettavo una manciata di secondi
375 views
closed with note: E' un errore dei test (o comunque del codice sulla VM) che non ha a che vedere con il nostro programma

4 Answers

E
Edward (25950 points)
2 4 172
answered Oct 30, 2019 by Edward (25,950 points)
edited Oct 30, 2019 by Edward
No non è normale... inoltre dopo 1.5s dovrebbe andare in timeout ed interrompere l'esecuzione. A meno che il prof non abbia cambiato qualcosa.

EDIT:
Per riassumere, il tuo programma va in timeout al test 5 (quando va in timeout mostra 1.5s come durata in slowest test durations), ma l'esecuzione di test_01 continua. Quindi ti dice che dopo 31s viene interrotto, ma in realtà il tuo programma finisce dopo quei 2 secondi e mezzo che vedi.
T
Trasciatti (1400 points)
10 20 34
commented Oct 30, 2019 by Trasciatti (1,400 points)

in effetti c'è scritto "time out time >1,5s" sul test 5, e come ultima riga c'è scritto:

MAX TEST TIME (31s) REACHED

è questo che mi ha fatta insospettire, magari mi sbaglio e lo dice a tutti (?)

_
_anto_ (100 points)
0 0 2
commented Oct 30, 2019 by _anto_ (100 points)
anche a me lo dice
E
Edward (25950 points)
2 4 172
commented Oct 30, 2019 by Edward (25,950 points)
Hai provato a ricaricare il file? È molto strano che vada oltre 31s, se come dici tu sul tuo pc ci mette 1 secondo. Tempi del genere indicano un loop infinito di solito

Edit:
Cosa c'è scritto sotto ============================ slowest test durations ============================ ?
Si trova nella scheda correttezza
T
Trasciatti (1400 points)
10 20 34
commented Oct 30, 2019 by Trasciatti (1,400 points)

ho provato a ricaricare (e ho anche ricaricato un programma migliore), ma nulla
Edit:

no, in slowest non supera gli 1,5s, lo scrive dopo la riga

===================== x failed, x passed in 2.46 seconds ======================
E
Edward (25950 points)
2 4 172
commented Oct 30, 2019 by Edward (25,950 points)

Allora secondo me, quello che succede, è che il test 5 va in timeout, ma l'esecuzione del programma non viene interrotta.

Calcola che se il test 5 va in timeout, lì vedrai sempre come tempo 1.5s, quindi quello è normale.

AndreaGasparini (18730 points)
6 12 118
commented Oct 30, 2019 by AndreaGasparini (18,730 points)

Se sotto alla voce slowest test durations l'esempio5 ha scritto sulla sinistra meno di 1.5s significa che viene superato con successo, in tal caso solo il professore può darci risposta.

Edit:
avevo interpretato male, se c'è scritto 1.5 effettivamente non superi il test e per qualche motivo rimane in loop su quella esecuzione

T
Trasciatti (1400 points)
10 20 34
commented Oct 30, 2019 by Trasciatti (1,400 points)
Boh è un po' strano, faccio davvero poche operaioni e sono davvero poco costose... aggiungo anche che non mi dice il tempo totale, ma questo immagino sia perché non passa un test
Edit:

no no, sotto a slowest time dà 1.5s precisi
E
Edward (25950 points)
2 4 172
commented Oct 30, 2019 by Edward (25,950 points)

no no, sotto a slowest time dà 1.5s precisi

Come ho scritto sopra, se il test 5 va in timeout, lì avrai sempre 1.5s come durata, questo perchè il test arriva ad 1.5s di runtime, e poi viene interrotto per il timeout.
Semplicemente il tuo programma ora come ora va in timeout al test 5, quella scritta dei 31s deriva dal fatto che test_01 non viene interrotto (almeno questo è quello che credo io)

AndreaGasparini (18730 points)
6 12 118
answered Oct 30, 2019 by AndreaGasparini (18,730 points)
La differenza è decisamente troppa, proverei prima di tutto a ricaricare il programma su q2a in modo che la VM effettui nuovamente la valutazione, più che altro mi sembra strano che si raggiunga il tempo di Timeout totale (che è fissato a 31 secondi) se sulla tua macchina lo passavi in 1 secondo. In teoria credo che un tempo così alto sia possibile solo con l'algoritmo più semplice da implementare o se in qualche modo il programma finisce in un loop inatteso.
T
Trasciatti (1400 points)
10 20 34
commented Oct 30, 2019 by Trasciatti (1,400 points)
ho provato a ricaricare, ho perfino migliorato di un bel po' il programma! però nulla
AlessandraIzzo (6010 points)
6 6 30
commented Oct 30, 2019 by AlessandraIzzo (6,010 points)
Con l'algoritmo più semplice dovrebbe essere 12-13 secondi il test 5
AlessandraIzzo (6010 points)
6 6 30
answered Oct 30, 2019 by AlessandraIzzo (6,010 points)
C'è per forza qualcosa "sotto". Comunque, oltre a quello che ti hanno già detto, considera che sulla VM per il test 5 devi considerare mezzo secondo in più che è il tempo per generare gli input. Sì, può sembrare ingiusto, ma se ne è già discusso sul forum e purtroppo questa cosa non cambierà. Quindi devi cercare di stare sotto 1 secondo sul tuo computer per il test 5, se vuoi stare tranquillo
Christian (15220 points)
2 4 77
answered Oct 30, 2019 by Christian (15,220 points)
Anche a me succedeva la stessa identica cosa, come diceva qualcun altro sembra come se dopo il timeout il programma continui per 31s.
Poi migliorando l'algoritmo sono riuscito a passare il test 5 e non me ne sono più preoccupato