Allo stato attuale
Ha sempre funzionato per te per farlo? "Se non è rotto, non aggiustarlo" è un'altra regola d'oro che dovrei attenermi a più. Mi ha causato un sacco di mal di testa quando non mi sono attenuto. Non può mai causare un problema, ma chi lo sa.
Come è stato detto prima "fai la cosa più semplice che possa funzionare". Ho trovato le regole di Pike sulla programmazione per essere molto illuminante.
Cosa considerare
Suppongo che tu intenda per lo più l'ottimizzazione della velocità. Perché c'è anche l'ottimizzazione per la leggibilità, la dimensione ...
L'ottimizzazione prematura è sempre negativa, perché:
- Ci vuole tempo per ottimizzare. Potresti passare questo tempo facendo qualcosa di meglio; per esempio, chiamando la tua ragazza;).
- L'ottimizzazione di solito significa rendere le cose più concrete.
- Molto probabilmente non sarà leggibile da altri programmatori. Ogni programmatore dovrebbe conoscere semplici algoritmi, quindi se c'è qualcosa di più complesso, perderà tempo a sconvolgere ciò che significa; ridurrà il livello basso, analizzando più informazioni e molto probabilmente facendo errori nella comprensione del codice ottimizzato.
- È stato detto da Donnald Knuth, che è l'autorità per la programmazione e se sostiene che qualcosa è in qualche modo è quasi certamente così.
- Devi misurare prima dove è il tuo sistema lento e quindi ottimizzare. Non il contrario.
Ad esempio il motore di Quake ha usato la stringa di confronto O (N) per cercare le variabili invece dell'hashing O (1), ha usato il linguaggio script Quake C che ha ottenuto circa il 10% delle sue prestazioni e il "famoso" PVS è semplice hashing O (1) con semplice compressione (la visibilità è precalcolata, ogni sezione del mondo per ogni sezione quindi ciò che gli oggetti sono visibili è ottenuta attraverso una ricerca di mappa hash e poiché tale informazione è enorme nella memoria è compressa). Il libro nero di programmazione grafica di Michael Abrash è pieno di esempi e esempi di "misura prima" dove ha sbagliato a valutare cosa fosse problema (capitolo 17
Ma l'ottimizzazione prematura non è sempre negativa, perché:
- Ci sono casi in cui, ottimizzando, puoi vedere una soluzione migliore. Ma è di più su una possibilità.
Quindi devi valutare i pro e i contro delle ottimizzazioni premature.
Penso che, poiché siamo tutti persone, devi solo masterizzarti poche volte con ottimizzazioni premature per smettere di usarle.