Meglio una minor complessità ciclomatica oppure velocità di esecuzione?

asked Oct 20, 2017 in Funzionamento degli homework by Anon1 (9,920 points)

Salve, facendo gli homework e vedendo i risultati globali mi è venuta in mente una questione: conviene puntare su una minore complessità ciclomatica oppure ad una velocità di esecuzione più rapida?

Ci sono alcuni esercizi che non possono essere ottimizzati in entrambi i valori, dobbiamo scegliere quale dei due parametri puntare. In questo caso, per il raggiungimento dei punti bonus, quale valore dobbiamo preferire?

Vorrei infine segnalare una anomalia: la complessità ciclomatica calcolata in questo modo è un po' strana, perché conta solamente la funzione con complessità maggiore, e non la media. Ciò significa che basta spezzare tutte le funzioni in microfunzioni per avere tante funzioni da bassa complessità ciclomatica, anche se non hanno senso. Una probabile soluzione sarebbe quella di sommare i punteggi di tutte le funzioni, in questo modo si scoraggia la creazione di nuove funzioni che non sono necessarie (e renderebbe più meritocratica la classifica).

2 Answers

Best answer
francesco.dev (33560 points)
14 51 129
answered Oct 20, 2017 by francesco.dev (33,560 points)
selected Oct 20, 2017 by Anon1

Ciao ema!

Ricorda che due punti bonus sono assegnati agli studenti presenti tra il 25% dei programmi più veloci a livello d'esecuzione ed altri due punti bonus sono assegnati agli studenti che rientrano nel 25% dei programmi con meno complessità ciclomatica!

Quindi puoi ben capire che per ricevere entrambi i punti bonus, bisogna creare un ottimo compromesso tra velocità e complessità ciclomatica, creando un buon codice che riesca a risolvere un problema in poco tempo e che non presenti strutture, meccanismi o procedure troppo complesse!

Infatti la sfida non è solo cercare di risolvere gli esercizi, ma soprattutto trovare una delle tante soluzioni che mette "d'accordo" velocità e complessità!

Sperando di averti aiutato attraverso questi dati più tecnici,
- Francesco Pio Scognamiglio

Auron (15880 points)
32 126 194
commented Oct 20, 2017 by Auron (15,880 points)
Io ti saluto ogni volta che ci incrociamo, spero non ti dispiaccia la mia stima :)
francesco.dev (33560 points)
14 51 129
commented Oct 20, 2017 by francesco.dev (33,560 points)
Hahahahaha, ho appena finito di scrivere un commento alla tua risposta! La stima è del tutto ricambiata :)
Auron (15880 points)
32 126 194
commented Oct 20, 2017 by Auron (15,880 points)
Che meraviglia ahahah
commented Oct 20, 2017 by Anon1 (9,920 points)
Grazie per la spiegazione, vedrò come velocizzare il mio codice senza perdere nella complessità!
Auron (15880 points)
32 126 194
answered Oct 20, 2017 by Auron (15,880 points)
edited Oct 20, 2017 by Auron
Non voglio fare il professorino Ema, ma ti garantisco che i miei programmi, come quelli di altri, hanno ottimi punteggi sia sulla complessità che sul tempo... Basta perderci il tempo necessario, c'è chi ci impiega di più, chi di meno... Per quanto riguarda la domanda principale, c'è già una discussione, se non ricordo male aperta proprio da me... Per l'osservazione sulla media/massima complessità e sulle mini funzioni, c'è già un altro post in cui ne abbiamo discusso con tanto di conferma del prof... Ragazzi, cercate sul forum, non fate domande ridondanti... Spero di aver soddisfatto la tua curiosità, se così fosse ricordato di segnalarmi con la miglior risposta :)

Intricatezza o tempo di esecuzione: http://q2a.di.uniroma1.it/797/intricatezza-o-tempo-di-esecuzione-questo-e-il-problema?show=797#q797

Intricatezza e numero di funzioni:
http://q2a.di.uniroma1.it/987/intricatezza-e-numero-di-funzioni?show=987#q987
Auron (15880 points)
32 126 194
commented Oct 20, 2017 by Auron (15,880 points)
Ho finito i 3 esercizi nel giro di tre giorni... Ho ottimizzato in maniera netta il primo e l'ultimo soltanto ieri :)
Questo per dirti che ce ne vuole per pensare un programma veramente ben fatto :)
francesco.dev (33560 points)
14 51 129
commented Oct 20, 2017 by francesco.dev (33,560 points)
Condivido pienamente :D
commented Oct 20, 2017 by Anon1 (9,920 points)
La mia questione deriva dal terzo esercizio: ho totalizzato una complessità massima di 1, però la velocità rimane sui 500 usec. Comunque ho visto che li professore valuta principalmente sull'intricatezza, quindi per me va bene così (non si può fare meno di 1!).