Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Velocizzare una funzione

s
stef (430 points)
1 2 4
in HW4 obbligatorio by (430 points)
Buongiorno,uso una funzione esterna per dividere in sillabe ovvero un ciclo for e una serie di if, ma la funzione e' lentissima sui test piu corposi.

Quache consiglio su come migliorare la velocita di esecuzione?
397 views

1 Answer

twgever (17470 points)
8 29 105
by (17.5k points)
-cerca di chiamare meno volte possibile la funzione. Quindi meglio passare tutto il testo in una volta, e poi gestire la situazione, piuttosto che passare il testo riga per riga.

-senza sapere come è articolata la funzione, è difficile darti consigli, però alcune cose abbastanza comuni, da evitare sono ad esempio evitare di salvarsi gli ES che non servono, infatti ti servono solo i finali.

-la tua funzione di divisione in sillabe dovrebbe essere molto semplice. La cosa che porta via più tempo è controllare ad uno ad uno i caratteri. Dopo ogni controllo, il programma dovrebbe fare un'operazione semplice, tipo aumentare un contatore.
twgever (17470 points)
8 29 105
by (17.5k points)
Ci sono tante maniere per partire dall'ultimo elemento di una lista. Puoi usare reverse, puoi fare un range che parte dall'ultimo elemento e procede con incremento -1, puoi inventare tante cose.
Hatlas (5340 points)
1 2 7
by (5.3k points)

@twgever Come si può fare a passare i testo tutto in una volta? Devi comunque ciclare ogni riga no? Cosa intendi tu nello specifico, la conversione? 

twgever (17470 points)
8 29 105
by (17.5k points)
passare il testo tutto in una volta alla funzione, quindi invece di passare la l'elemento della lista (se hai diviso il testo in liste), passi l'intera lista. Poi è elementare che dovrai ciclare per fare quello che devi fare sulle righe.
Hatlas (5340 points)
1 2 7
by (5.3k points)
edited by
Io per ogni riga del file chiamo la funzione che mi ritorna es e finale, e faccio append su due liste inizialmente vuote. Così è poco efficiente?
twgever (17470 points)
8 29 105
by (17.5k points)
Secondo me, meno efficiente di chiamare la funzione una sola volta. Considera che così, con il test più lungo la chiameresti 2571 volte in più.