In generale, la soluzione più importante per un problema sarà quella effettivamente esistente ed è valida per i casi così come esistono per il tuo problema. In altre parole, evita l'ottimizzazione prematura fino a quando non sai che hai un codice inefficiente o un codice efficiente che deve essere più veloce.
Inoltre, non dimenticare che la soluzione migliore per la tua applicazione potrebbe non essere la soluzione generale. Caso e punto, un paio di anni fa un professore ha dato alla nostra classe un problema in cui dovevamo stampare i primi 10 numeri di un dato tipo (scusate, la mia memoria non mi soddisfa per il tipo, ma era uno dei numeri più insoliti classi) e ci è stato dato un test per verificare che il numero fosse il tipo dato. Questa è stata la portata del problema che ci è stato dato e ci è stato detto che era dovuto il giorno successivo con la soluzione più efficiente che ha ricevuto pieno credito. La seguente lezione del professore riassume i risultati:
- Alcuni studenti hanno utilizzato un semplice ciclo e la formula fornita per verificare che i numeri fossero corretti e li hanno visualizzati, lentamente ma hanno svolto il lavoro, O (n ^ 3).
- Gli altri studenti hanno fatto la loro ricerca e hanno trovato una formula che ha fatto un lavoro migliore di controllo per garantire che un determinato numero fosse valido, questi programmi sono stati eseguiti molto più velocemente, O (n ^ 2).
- Uno studente ha utilizzato la formula lenta per generare i valori e poi li ha copiati in un array costante nel loro codice e ne ha visualizzato il contenuto, O (n).
La soluzione finale è stata giudicata la più efficiente dal professore. Risulta che il problema era in realtà un esercizio di comprensione completa del problema e non solo di uscire e trovare la soluzione più efficiente.
Il punto di cui sopra è che quando si tratta di trovare una soluzione efficiente un problema, in genere è meglio passare il tempo per assicurarsi di capire veramente quale sia il problema prima di uscire e scrivere codice, o tentare di ottimizzare il codice . Se è possibile memorizzare un set di valori di riferimento in un array costante, è meglio farlo dal punto di vista delle prestazioni piuttosto che provare a scrivere un algoritmo elaborato.
Allo stesso modo, non dimenticare che per la maggior parte delle applicazioni, le uniche persone che tendono a vedere codice inefficiente (quando non è inutilmente inefficiente!) sono gli sviluppatori stessi. Se scrivi un codice pulito che fa esattamente ciò che deve fare, allora le probabilità sono che la maggior parte delle volte gli utenti non noteranno problemi di prestazioni quando lavorano con il tuo programma e quando fanno semplicemente ottimizzare le parti che menzionano per te.